Базы данных Oracle - статьи

         

А как же ведет себя Oracle?


Oracle решает проблему нетрадиционным путем. Если посмотреть внимательно на приведенный выше пример, то можно заметить, что “повторяемое” чтение в действительности избыточно для достижения правильного результата, поскольку проблема состоит не в том, что операцию чтения надо обязательно повторить с получением одинакового результата, а в том, что при однократном чтении данные оказываются не согласованными по времени. Если указанную согласованность обеспечить, то и задача будет решена! В этом собственно и состоит сущность моды изоляции “согласованное чтение”, реализуемой сервером Oracle: любая операция чтения в Oracle выдает пользователю данные только тех транзакций, которые были завершены к моменту начала операции (и естественно не выдает данных незавершенных транзакций). Пользователь получает как бы “срез” данных БД на момент начала чтения. Такой режим работы называют еще “многоверсионным” чтением, ибо каждый пользователь видит как бы свою версию БД. Однако все это было бы не очень оправдано, если бы не тот замечательный факт, что Oracle реализует “согласованное чтение” без использования блокировок вообще. Операция чтения в Oracle никогда не блокируется и никогда не блокирует других. Не вдаваясь в обсуждение того, как Oracle добивается такого результата (если очень коротко, то в случае необходимости выполняется “реконструкция” данных с помощью т.н. “сегмента отката” - замечательный пример того, как одна и та же структура с СУБД позволяет “убивать сразу несколько зайцев”), отметим, что данный режим работы является среди коммерческих СУБД уникальным.



Содержание раздела