Что такое предикатные блокировки в контексте уровня изоляции Serializable? Как СУБД отслеживает условия запросов SELECT ... WHERE ..., чтобы предотвратить аномалию write skew, не блокируя всю таблицу целиком?

В PostgreSQL Serializable использует SSI: SIREAD-метки фиксируют прочитанные данные и позволяют обнаружить опасные зависимости чтение–запись. Обычно они не блокируют writers, а приводят к отмене одной транзакции.

Короткий ответ

Что ответить на собеседовании

В PostgreSQL Serializable использует SSI: SIREAD-метки фиксируют прочитанные данные и позволяют обнаружить опасные зависимости чтение–запись. Обычно они не блокируют writers, а приводят к отмене одной транзакции.

Подробный разбор

Ответ с пояснениями

В PostgreSQL Serializable использует SSI: SIREAD-метки фиксируют прочитанные данные и позволяют обнаружить опасные зависимости чтение–запись. Обычно они не блокируют writers, а приводят к отмене одной транзакции.

Отслеживание возможно на уровне tuple, страницы или отношения; при крупном чтении оно может укрупняться. Это не буквальный lock на текст WHERE. Опасная структура зависимостей вызывает serialization failure, после которого приложение повторяет всю транзакцию. Реализации других СУБД могут использовать блокирующие range locks.

Источник: wiki.postgresql.org.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее