Скачиваний:
29
Добавлен:
11.04.2015
Размер:
171.01 Кб
Скачать

12. Многовариантность данных по чтению в субд Oracle.

Для реализации неблокирующего подхода в СУБД Oracle применяется механизм многовари­антности данных. Этот механизм обеспечивает:

согласованность по чтению, которая заключается в выдаче запро­сами согласованных результатов на момент начала их выполнения;

неблокируемые запросы чтения данных при выполнении другими транзакциями операций изменения данных.

Многовариантность достигается за счет поддержки в базе данных различных версий одних и тех же элементов данных. Для реализации этого механизма каждой активизируемой транзакции присваивается уникальный системный номер SCN, System change number. Каждый блок данных должен иметь одно из значений SCN -это значение всегда совпадает с номером последней транзакции, которая произвела изменения данных в этом блоке. Ранние версии каждого из блоков данных хранятся в сегменте отката, и им соответствуют системные номера SCN, присвоенные тран­закциями, которые стартовали раньше. При выполнении транзакции ее системный номер сравнивается с номером SCN текущей версии каждого из считываемых бло­ков. Если номер транзакции больше либо равен номеру текущей версии блока, то это указывает, что после старта транзакции обновление текущей версии блока не производилось либо было выполнено этой транзакцией, и, следовательно, необ­ходимо осуществлять считывание текущей версии. В противном случае следует обратиться к сегменту отката и выбрать версию блока, у которой номер SCN блока является наиболее близким к системному номеру транзакции.

Пример. На рис. 6.10 представлена иллюстрация механизма многовариантности данных для транзакции, считывающей три блока данных.

Рис. 6.10. Реализация механизма многовариантности данных

Системные номера текущих версий блоков 1 и 3 удовлетворяют условию на соответствие системному номеру транзакции R1, и эти блоки передаются в результирующий набор данных. Системный номер SCN 2 текущей версии блока данных 2 больше системного номера транзакции SCNT. Такое соотношение между системными номерами указывает на то, что в текущей версии блока 2 были произведены изменения данных транзакцией, которая стартовала позже текущей транзакции, и, следовательно, необходимо из сегмента отката выбрать более раннюю версию блока данных 2.

Соседние файлы в папке ответы