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