Будет ли Postgres автоматически кэшировать активные записи из большой таблицы?

У меня есть таблица, которая содержит большое количество записей, но только часть из них «активна» в любой момент времени, и моему веб-приложению просто нужно ссылаться на них. У меня есть процесс обновления, который запускается каждую ночь, который добавляет новые (активные) записи и может повторно активировать старые записи.

Сможет ли postgres понять, что он должен кэшировать активные записи? Если нет, должен ли я переместить активные записи в новую таблицу, чтобы помочь ей, или есть какой-то другой способ дать ей «подсказку»?

ОБНОВЛЕНИЕ. Активные записи обозначаются значением NULL в поле даты и времени с именем end_date.

Спасибо


person alan    schedule 31.05.2013    source источник
comment
Могли бы действительно сделать больше информации о том, насколько эти записи активны или нет.   -  person David Aldridge    schedule 31.05.2013


Ответы (2)


Операционная система будет кэшировать активные и недавно использованные блоки диска. PostgreSQL в основном использует дисковый кеш операционной системы. Однако его собственный shared_buffers также будет кэшировать горячие страницы.

Похоже, это очень окольный способ сказать: «У меня есть эти запросы, которые, по моему мнению, медленнее, чем должны быть». Попробуйте прочитать http://wiki.postgresql.org/wiki/Slow_Query_Questions и https://stackoverflow.com/tags/postgresql-performance/info

person Craig Ringer    schedule 31.05.2013

Я не уверен, что вы подразумеваете под «активной записью», возможно, это терминология postgres, которую я просто пропускаю. Если вы просто имеете в виду строку с именем «активная», наложите на нее индекс. Таким образом, postgres может напрямую обращаться к ним без поиска по строкам, так что это похоже на кеш (перестраивается каждый раз, когда вы изменяете строку).

person Zsolt Szilagyi    schedule 31.05.2013