Преимущества использования FOR NO KEY UPDATE и FOR UPDATE в PostgreSQL:
- FOR UPDATE: блокирует строки, полученные оператором SELECT, как для изменения, что предотвращает их блокировку, изменение или удаление другими транзакциями до завершения текущей. 4
- FOR NO KEY UPDATE: действует подобно FOR UPDATE, но запрашиваемая в этом режиме блокировка слабее: она не будет блокировать команды SELECT FOR KEY SHARE, пытающиеся получить блокировку тех же строк. 14
Недостатки использования:
- FOR UPDATE: блокировка строки может повлечь запись на диск, например, если SELECT FOR UPDATE изменяет выбранные строки, чтобы заблокировать их. 14
- FOR NO KEY UPDATE: не блокирует команды SELECT FOR KEY SHARE, которые пытаются получить блокировку для тех же строк. 4
Выбор между этими режимами зависит от конкретных требований и задач пользователя.