Встречается на собеседованиях • сегодня

Какие знаешь блокировки в PostgreSQL

PostgreSQL поддерживает несколько уровней блокировок для управления параллельным доступом к данным:

1. Row-Level Locks (блокировки строк):

  • FOR UPDATE - блокирует строки для изменения
  • FOR NO KEY UPDATE - менее строгая версия FOR UPDATE
  • FOR SHARE - блокирует строки от изменения, но разрешает чтение
  • FOR KEY SHARE - самая слабая блокировка строк

2. Table-Level Locks (блокировки таблиц):

  • ACCESS SHARE - самый слабый уровень, конфликтует только с ACCESS EXCLUSIVE
  • ROW SHARE - разрешает параллельный доступ, но запрещает EXCLUSIVE и ACCESS EXCLUSIVE
  • ROW EXCLUSIVE - автоматически устанавливается при UPDATE, DELETE, INSERT
  • SHARE UPDATE EXCLUSIVE - предотвращает параллельные изменения схемы таблицы
  • SHARE - разрешает только чтение
  • SHARE ROW EXCLUSIVE - похож на SHARE, но запрещает SHARE
  • EXCLUSIVE - разрешает только параллельные ACCESS SHARE
  • ACCESS EXCLUSIVE - полная блокировка таблицы

Пример:

sql
BEGIN;
SELECT * FROM accounts WHERE user_id = 1 FOR UPDATE; -- блокировка строки
-- другие транзакции не смогут изменять эту строку
COMMIT;

Блокировки помогают поддерживать целостность данных при параллельном доступе.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы