PostgreSQL 19 добавил WAIT FOR LSN для чтения с реплики
В PostgreSQL 19 появилась команда WAIT FOR LSN, которая блокирует реплику до применения нужной позиции WAL, решая проблему read-your-writes. Тесты из PHP показали 0 устаревших чтений из 5000 против 5000 из 5000 без WAIT, но есть ограничения: нельзя биндить LSN, команда должна идти первой в транзакции, а pg_current_wal_insert_lsn может зависать на границе WAL-страницы.
- Без WAIT все 5000 чтений с реплики оказались устаревшими, с WAIT — 0
- Медианное ожидание 315 мкс на простое и 1,2 мс под нагрузкой
- LSN нельзя биндить: работает только с ATTR_EMULATE_PREPARES
- pg_current_wal_insert_lsn дал 5 таймаутов из 5000 на границе страницы
Читать дальше
Софт