Мне любопытно, есть ли способ намекнуть postgresql, какие данные с большей вероятностью должны кэшироваться в памяти. в моем сценарии сервер будет обрабатывать в основном трафик чтения, весь набор данных намного больше, чем доступная память, но некоторые таблицы [которые не обязательно наиболее часто используются] должны храниться в памяти, в то время как другие не требуют высокой производительности и можно получить с диска.
Я знаю, что memcached или подобное может быть разумным обходным решением, но, возможно, все это можно сделать и без этого.
этот вопрос лучше подходит для stackoverflow?
Невозможно намекнуть PostgreSQL о вашем кеше. В большинстве случаев в этом нет необходимости - наиболее часто используемые части таблиц будут кэшироваться. Это не так наивно, как просто «эта таблица используется чаще всего, давайте кэшируем эту таблицу», она действительно учитывает другие вещи. (Например, при последовательном сканировании больших таблиц по-прежнему не разрешается использовать полный буферный кеш)
Обходной путь, который вы могли бы сделать, - это поместить горячие таблицы в другое табличное пространство, смонтированное на другом разделе, и настроить параметры кэширования ОС для этого раздела (если это возможно на уровне ОС, конечно). PostgreSQL довольно сильно полагается на кеш файловой системы на уровне ОС, поэтому, если вы можете настроить его под свои нужды, это может решить вашу проблему.