🛠️ После crash PostgreSQL таблица существует, а строки исчезли?
Проверьте, не была ли она:
CREATE UNLOGGED TABLE ...
Для UNLOGGED это может быть ожидаемым поведением.
PostgreSQL не записывает данные такой таблицы в WAL, поэтому WAL overhead ниже.
Но цена — другие durability guarantees:
— UNLOGGED table не crash-safe; — после crash или unclean shutdown её содержимое автоматически очищается; — содержимое не реплицируется на standby.
То есть:
таблица есть + данных после аварии нет
не обязательно означает corruption.
Тип relation можно проверить через:
SELECT relname, relpersistence FROM pg_class WHERE relname = 'work_queue';
u означает unlogged.
Дальше спросите:
— был ли именно crash/unclean shutdown, а не обычный restart; — что хранилось в таблице; — можно ли восстановить содержимое; — есть ли другой source of truth; — нужны ли эти данные на standby; — действительно ли WAL был bottleneck.
Самый важный вопрос до использования UNLOGGED:
«Что сделает приложение, если после аварии таблица окажется пустой?»
Если данные можно безопасно перестроить — модель может быть подходящей.
Если это единственная копия критичных данных — решение требует пересмотра.
Сохраните вопросы, которые стоит задать до использования UNLOGGED для рабочих данных.