Метод выделения версий данных

Для каждой транзакции формируется и запоминается ее текущий системный номер (SCN). Чем позже начата транзакция, тем больше ее SCN.

При выполнении операции записи страниц данных на диск фиксируется SCN транзакции, производящей эту операцию. Этот SCN становится текущим системным номером страницы данных. Транзакции, только читающие данные, не блокируют объекты в базе данных.

Если транзакция А читает страницу данных, то SCN транзакции А сравнивается с SCN читаемой страницы данных.

Если SCN страницы данных меньше или равен SCN транзакции А, то транзакция А читает эту страницу.

Если SCN страницы данных больше SCN транзакции А, то это означает, что некоторая транзакция В, начавшаяся позже транзакции А, успела изменить данные страницы. В этом случае транзакция А просматривает журнал транзакцийназад в поиске первой записи об изменении нужной страницы данных с SCN меньшим, чем SCN транзакции А. Найдя такую запись, транзакция А использует старый вариант данных страницы.

 

Метод предикатных синхронизационных блокировок:

- устраняет появление кортежей-фантомов

- реализуется сложнее, чем метод, использующий блокировки по намерению

- уменьшает вероятность возникновения конфликтов транзакций по сравнению с использованием блокировок по намерению

 

Методом разрешения ситуации тупика является

- после разрешения тупика, транзакция, для которой был произведен откат, повторяется заново

- откат одной из транзакций, находящихся в состоянии тупика

 

При блокировании более мелкого объекта базы данных

- вероятность конфликта транзакций становится ниже

- накладные расходы на установку блокировок становятся выше

 

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

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

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

 

Совместимость S и X блокировок

Если транзакция А заблокировала кортеж S-блокировкой,

то транзакция В может наложить свою S-блокировку

то транзакция В не может наложить свою X-блокировку

то транзакция A может наложить свою X-блокировку

то транзакция В не может разблокировать кортеж и наложить свою S-блокировку

то транзакция В не может разблокировать кортеж и наложить свою X-блокировку.

 

Совместимость S и X блокировок

Если транзакция А заблокировала кортеж X-блокировкой,

то транзакция В не может наложить свою S-блокировку

то транзакция В не может наложить свою X-блокировку

то транзакция A не может наложить свою S-блокировку

то транзакция В не может разблокировать кортеж и наложить свою S-блокировку

то транзакция В не может разблокировать кортеж и наложить свою X-блокировку.

 

Сравнение метода временных меток и метода блокировок

- При использовании метода временных меток эффективность распараллеливания транзакций будет ниже, чем при использовании метода блокировок.

- При использовании метода временных меток неизвестно, какая транзакция будет откатана более дорогая или более дешевая.

- При использовании метода временных меток откаты транзакций будут чаще, чем при использовании метода блокировок.

- Метод временных меток реализуется проще, чем метод, основанный на блокировках

 

Средствами стандартного языка SQL можно управлять

- уровнями изоляции транзакций

 

Транзакции называются конкурирующими, если

- выполнение одной транзакции влияет на выполнение другой транзакции