🛠️ После 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 для рабочих данных.
😄VK | 💬Макс | 🌐 Cайт
🔹🔹🔹🔹
Проверьте, не была ли она:
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 для рабочих данных.
😄VK | 💬Макс | 🌐 Cайт
🔹🔹🔹🔹