Блокировки и транзакции

Материал из AOW

Перейти к: навигация, поиск

Транзакции и точки сохранения

Уровни изоляции транзакций:

  • READ UNCOMMITED – отсутствует, используется READ COMMITED
  • READ COMMITED – Каждая транзакция видит только результаты успешно завершённых операций

(используется по умолчанию)

  • REPEATABLE READ – отсутствует, используется SERIALIZABLE
  • SERIALIZABLE

SQL-синтаксис команд:

  • BEGIN - начинает транзакцию
  • ROLLBACK - откатывает изменения
  • SAVEPOINT save_point - добавляет новую точку сохранения
  • ROLLBACK TO save_point - откатывает изменения то точки сохранения
  • COMMIT - завершает транзакцию

Блокировки

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

Общий синтаксис:

  • LOCK [ TABLE ] таблица IN режим

режим ::- { [ ROW | ACCESS ] { SHARE | EXCLUSIVE } | SHARE ROW EXCLUSIVE } MODE

  • LOCK [ TABLE ] таблица

устанавливает максимально жесткий режим блокировки (ACCESS EXCLUSIVE)

Уровни блокировок:

  • ACCESS SHARE MODE. Устанавливается автоматически командой SELECT для таблиц, из которых производится выборка данных. В заблокированных таблицах запрещается выполнение команд ALTER TABLE, DROP TABLE и VACUUM. В этом режиме для заблокированных таблиц также запрещаются параллельные блокировки уровня ACCESS EXCLUSIVE MODE.
  • ROW SHARE MODE. Устанавливается автоматически командами SELECT, содержащими секцию FOR UPDATE или FOR SHARE. В заблокированных таблицах запрещается выполнение команд ALTER TABLE, DROP TABLE и VACUUM. В этом режиме для заблокированных таблиц также запрещаются параллельные блокировки уровней EXCLUSIVE MODE и ACCESS EXCLUSIVE MODE.
  • ROW EXCLUSIVE MODE. Устанавливается автоматически командами UPDATE, INSERT и DELETE. В заблокированных таблицах запрещается выполнение команд ALTER TABLE, DROP TABLE и CREATE INDEX. В этом режиме для заблокированных таблиц также запрещаются параллельные блокировки уровней SHARE MODE, SHARE ROW EXCLUSIVE MODE, EXCLUSIVE MODE и ACCESS EXCLUSIVE MODE.
  • SHARE UPDATE EXCLUSIVE MODE . Устанавливается автоматически командами VACUUM (без FULL), ANALYZE и CREATE INDEX CONCURRENTLY.
  • SHARE MODE. Устанавливается автоматически командами CREATE INDEX (без CONCURRENTLY). В заблокированных таблицах запрещается выполнение команд INSERT, UPDATE, DELETE, ALTER TABLE, DROP TABLE и VACUUM. В этом режиме для заблокированных таблиц также запрещаются параллельные блокировки уровней ROW EXCLUSIVE MODE, SHARE ROW EXCLUSIVE MODE, EXCLUSIVE MODE и ACCESS EXCLUSIVE MODE.
  • SHARE ROW EXCLUSIVE MOOE. Специальный режим блокировки, практически идентичный режиму EXCLUSIVE MODE, но допускающий установку параллельных блокировок уровня ROW SHARE MODE.
  • EXCLUSIVE MODE. Запрещает выполнение команд INSERT, UPDATE, DELETE, CREATE INDEX, ALTER TABLE, DROP TABLE и VACUUM, а также команд SELECT с секцией FOR UPDATE. В этом режиме для заблокированных таблиц также запрещаются параллельные блокировки уровней ROW SHARE MODE, ROW EXCLUSIVE MODE, SHARE MODE, SHARE ROW EXCLUSIVE MODE и ACCESS EXCLUSIVE MODE.
  • ACCESS EXCLUSIVE MODE. Устанавливается автоматически командами ALTER TABLE, DROP TABLE и VACUUM. В этом режиме для заблокированных таблиц запрещаются любые команды или параллельные блокировки любого уровня.


См.также

Личные инструменты

Разработка веб-сайтов, автоматизация.
По всем вопросам обращайтесь по телефонам:

+7 495 640 29 90
http://artofweb.ru