Как разместить всю всю базу данных PostgreSql в ОЗУ для более быстрого доступа? У меня 8 ГБ памяти, и я хочу выделить 2 ГБ для БД. Я прочитал об общих настройках буферов, но он просто кэширует наиболее доступный фрагмент базы данных. Мне понадобилось решение, в котором вся БД помещается в ОЗУ, и любое чтение будет происходить из БД ОЗУ, и любая операция записи сначала будет записываться в БД ОЗУ, а затем в БД на жестком диске (что-то вроде по умолчанию fsync = с совместно используемыми буферами в настройках конфигурации postgresql).
Необходимо загрузить всю базу данных postgreSQL в оперативную память
Ответ 1
Я задал себе тот же вопрос некоторое время. Одним из недостатков PostgreSQL является то, что он, похоже, не поддерживает двигатели хранения IN MEMORY, как это делает MySQL...
В любом случае я столкнулся с статьей пару недель назад, описывая, как это можно сделать; хотя он работает только в Linux. Я действительно не могу ручаться за него, потому что я сам его не пробовал, но, похоже, это имеет смысл, поскольку табличное пространство PostgreSQL действительно назначено смонтированным репозиторием.
Однако даже при таком подходе я не уверен, что вы могли бы поместить ваши индексы в оперативную память; Я не думаю, что MySQL заставляет индекс HASH использовать его таблицу IN MEMORY ни для чего...
Я также хотел сделать аналогичную вещь для повышения производительности, поскольку я также работаю с огромными наборами данных. Я использую python; у них есть словарные типы данных, которые являются в основном хэш-таблицами в виде пар {ключ: значение}. Их использование очень эффективно и эффективно. В принципе, чтобы получить таблицу PostgreSQL в ОЗУ, я загружаю ее в такой словарь python, работаю с ней и время от времени сохраняю ее в db; его стоит, если он хорошо используется.
Если вы не используете python, я уверен, что это аналогичная структура данных, сопоставляющая словари на вашем языке.
Надеюсь, это поможет!
Ответ 2
если вы извлекаете данные по id, используйте memcached - http://www.danga.com/memcached/ + postgresql.
Ответ 3
Возможно, что-то вроде кеш тайны Tangosol, если вы используете Java.
Ответ 4
Только с базой данных 8 ГБ, если вы уже оптимизировали всю активность SQL и готовы решить проблемы с аппаратным обеспечением, я предлагаю вам проблемы. Это просто не масштабируемое решение в долгосрочной перспективе. Вы уверены, что вы ничего не можете сделать, чтобы внести существенные различия в сторону разработки программного обеспечения и базы данных?
Ответ 5
Настройте старомодный RAMdisk и сообщите pg, чтобы сохранить там свои данные.
Убедитесь, что вы хорошо поддерживаете его.