Как предотвратить запись в журнал только на одну таблицу в PostgreSQL?
-
09-06-2019 - |
Вопрос
Я подумываю о доставке журналов Журналов записи впереди (WAL ) в PostgreSQL для создания базы данных с теплым резервированием. Тем не менее, у меня есть одна таблица в базе данных, которая получает огромное количество INSERT / DELETE каждый день, но меня не волнует защита данных в ней. Мне было интересно, чтобы уменьшить количество производимых WAL, есть ли способ предотвратить запись какой-либо активности на одной таблице в WAL?
Решение
К сожалению, я не верю, что есть. Ведение журнала WAL работает на уровне страницы, который намного ниже уровня таблицы и даже не знает, на какой странице хранятся данные из какой таблицы. На самом деле, файлы WAL даже не знают, какие страницы принадлежат какой базе данных .
Возможно, вы захотите перенести вашу таблицу высокой активности на совершенно другой экземпляр PostgreSQL. Это кажется радикальным, но я не могу придумать другого пути, чтобы избежать появления этой активности в ваших файлах WAL.
Другие советы
Наткнулся на этот старый вопрос, на который теперь есть лучший ответ. В Postgres 9.1 введены «Unlogged Tables», которые представляют собой таблицы, которые не регистрируют свои изменения DML в WAL. См. Документы для получения дополнительной информации, но, по крайней мере, сейчас есть решение этой проблемы. Р>
См. Ожидание 9.1 - НЕЗАКОННЫЕ таблицы от depesz и 9,1 документа . р>
Чтобы предложить один вариант для моего собственного вопроса. Есть временные таблицы - " временные таблицы автоматически удаляются в конце сеанса или, возможно, в конце текущей транзакции (см. ON COMMIT ниже) " - которые, я думаю, не генерируют WAL. Тем не менее, это не может быть идеальным, как создание таблицы & amp; дизайн должен быть в коде.
Я бы подумал о memcached для таких вариантов использования, как этот. Вы даже можете распределить нагрузку на кучу дешевых машин.