Глава 9. Транзакции
9.7. Блокировки
Кроме поддержки уровней изоляции транзакций, PostgreSQL позволяет также созда-
вать явные блокировки данных как на уровне отдельных строк, так и на уровне це-
лых таблиц. Блокировки могут быть востребованы при проектировании транзакций
с уровнем изоляции, как правило, Read Committed, когда требуется более детальное
управление параллельным выполнением транзакций. PostgreSQL предлагает много
различных видов блокировок, но мы ограничимся рассмотрением только двух из
них.
Команда SELECT имеет предложение FOR UPDATE, которое позволяет заблокировать
отдельные строки таблицы с целью их последующего обновления. Если одна транзак-
ция заблокировала строки с помощью этой команды, тогда параллельные транзакции
не смогут заблокировать эти же строки до тех пор, пока первая транзакция не завер-
шится, и тем самым блокировка не будет снята.
Проведем эксперимент, как и прежде, с использованием двух терминалов. Мы не бу-
дем приводить все вспомогательные команды создания и завершения транзакций,
а ограничимся только командами, выполняющими полезную работу.
Итак, на первом терминале организуйте транзакцию с уровнем изоляции Read
Committed и выполните следующую команду:
Достарыңызбен бөлісу: