- •Алгоритмы совместного доступа к базам данных
- •Конкуренция, параллельность и согласованность
- •Алгоритмы Oracle, обеспечивающие параллельность и согласованность
- •Транзакции и взаимовлияние
- •Потери изменений
- •Черновое чтение
- •Повторяемое и неповторяемое чтение
- •Уровни изоляции
- •Isolation level read committed;
- •Алгоритмы блокирования Oracle
- •Автоматическое и явное блокирование
- •Уровни блокировок
- •Разделяемые блокировки
- •Исключающие блокировки
- •Блокировки dml
- •Строчные блокировки
- •Табличные блокировки
- •In exclusive mode
- •Повышение блокировок
- •Запросы и блокирование
- •Блокировки ddl
- •Исключающие блокировки ddl
- •Разделяемые блокировки ddl
- •Блокировки синтаксического анализа
- •Внутренние фиксаторы
- •Многовариантность
- •Системный номер изменения
- •Неблокирующие запросы
- •Многовариантность и согласованность чтения на уровне транзакций
- •Ошибки "слишком старый моментальный снимок"
- •Автоматическое функционирование системы
Алгоритмы совместного доступа к базам данных
Управление доступом к разделяемой базе данных со стороны сотен и тысяч пользователей может оказаться очень сложной задачей. В этой части рассказывается о средствах Oracle8, обеспечивающих безопасный параллельный доступ пользователей к базе данных. В этой части обсуждаются:
Концепции параллельности и согласованности данных
Автоматические и управляемые вручную алгоритмы блокирования
Алгоритм многовариантности
Конкуренция, параллельность и согласованность
В многопользовательских компьютерных системах необходимо соблюдать конкуренцию, параллельность и согласованность по отношению к ресурсам, с которыми пользователи работают совместно. Например, в компьютерной сети файловый сервер не должен допускать изменения одной и той же информации одновременно несколькими пользователями, иначе пользователи будут мешать друг другу, и результаты их работы могут быть потеряны. Серверы печати, во избежание обращения к сетевому принтеру двух пользователей в одно и то же время, применяют, как правило, алгоритмы организации очередей.
Конкуренция, параллельность и согласованность — это близкие по смыслу термины, однако они имеют некоторые отличия:
Конкуренция (contention) —ситуация, когда двое пользователей пытаются одновременно обратиться к одному и тому же ресурсу, например к файлу или принтеру.
Параллельность (concurrency) —ситуация, когда несколько пользователей могут обращаться к одному и тому же ресурсу, как если бы каждый пользователь обращался к этому ресурсу отдельно от других. Параллельность высока, когда пользователь не замечает задержки при обращении к разделяемому ресурсу. И наоборот, параллельность низка, когда пользователь должен долгое время ожидать доступа к разделяемому ресурсу.
Согласованность (consistency) —ситуация, когда пользователь обращается к разделяемому ресурсу, и этот ресурс демонстрирует неизменность своих характеристик во время выполнения различных операций.
В следующем разделе представлены алгоритмы Oracle, обеспечивающие параллельность и согласованность работы пользователей.
Алгоритмы Oracle, обеспечивающие параллельность и согласованность
Oracleпредставляет собой систему управления доступом к единственной базе данных со стороны многих пользователей. Поэтому вOracleимеются алгоритмы параллельности и согласованности, устраняющие конкуренцию среди пользователей за одни и те же ресурсы базы данных и позволяющие одновременно осуществлять безопасный доступ к базе данных. В то же время алгоритмы параллельности и согласованности не усложняют процесса обращения к базе данных и не ухудшают производительности системы. Например, если два пользователя хотят обновить одну и ту же строку таблицы почти одновременно,Oracleприменяет автоматический алгоритм блокирования, чтобы так упорядочить(serialze) транзакции, как если бы они выполнялись по отдельности(isolation).Когда пользователь хочет обкатиться с запросом к таблице, которая в это время модифицируется другим пользователем, алгоритм многовариантности (multiversioning)разрешает сразу же обработать запрос первого пользователя, считывая данные в таком виде, в каком они находились до того, как открытая транзакция их изменила.
Блокирование и многовариантность — это два алгоритма Oracle, которые используются для обеспечения безопасного доступа многих пользователей к базе данных. Позже в данной части об этих алгоритмах будет рассказано более подробно. Рассмотрим сначала основные проблемы, которые могут возникнуть при обеспечении параллельности работы в многопользовательской системе базы данных.