70.7. Рекомендательные блокировки #
Postgres Pro Shardman предоставляет API, позволяющий приложениям создавать рекомендательные блокировки на весь кластер. Они похожи на рекомендательные блокировки PostgreSQL, но применяются на всех узлах кластера. Рекомендательные блокировки и кластерные рекомендательные блокировки выполняются одновременно и не конфликтуют между собой, поскольку глобальные кластерные блокировки используют собственные типы блокировок. Обе эти блокировки отображаются в представлении pg_locks
со значением shardman
параметра locktype
.
Когда накладывается глобальная блокировки, координатор отправляет запрос на блокировку на каждый узел в заданном порядке (в зависимости от rgid
). В случае штатного запроса блокировка предоставляется, когда оператор успешно выполняется на всех узлах. В случае тестового запроса блокировка также предоставляется, если её можно применить на всех узлах. Если один из узлов не смог применить блокировку, тестовый запрос вернёт значение false
. Если возвращённый результат одного из узлов отличается от ранее полученного (false
после true
или true
после false
), это считается ошибкой.
Список кластерных рекомендательных блокировок представлен в разделе Рекомендательные блокировки для распределённой системы.