Оптимистическая и пессимистическая блокировки — стратегии согласования, а row/table locks — механизмы БД. Оптимистический UPDATE с проверкой версии тоже использует физические блокировки при записи.
Как соотносятся пессимистическая и оптимистическая блокировки со строчными и табличными блокировками PostgreSQL? Что такое LOCK TABLE?
Оптимистическая и пессимистическая блокировки — стратегии согласования, а row/table locks — механизмы БД. Оптимистический UPDATE с проверкой версии тоже использует физические блокировки при записи.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Оптимистическая и пессимистическая блокировки — стратегии согласования, а row/table locks — механизмы БД. Оптимистический UPDATE с проверкой версии тоже использует физические блокировки при записи.
Пессимистический подход может заранее взять SELECT ... FOR UPDATE на нужные строки. LOCK TABLE явно запрашивает табличный lock выбранного режима до конца транзакции; не каждый режим запрещает обычное чтение. PostgreSQL также автоматически берёт табличные locks при DML, поэтому «строчный» и «табличный» не взаимоисключающие описания. Режимы выбирают по конфликтам; широкая блокировка может остановить несвязанные операции. Locks не держат во время долгого внешнего I/O.
Источник: www.postgresql.org.