Подтвердить что ты не робот

Необходимо загрузить всю базу данных postgreSQL в оперативную память

Как разместить всю всю базу данных PostgreSql в ОЗУ для более быстрого доступа? У меня 8 ГБ памяти, и я хочу выделить 2 ГБ для БД. Я прочитал об общих настройках буферов, но он просто кэширует наиболее доступный фрагмент базы данных. Мне понадобилось решение, в котором вся БД помещается в ОЗУ, и любое чтение будет происходить из БД ОЗУ, и любая операция записи сначала будет записываться в БД ОЗУ, а затем в БД на жестком диске (что-то вроде по умолчанию fsync = с совместно используемыми буферами в настройках конфигурации postgresql).

4b9b3361

Ответ 1

Я задал себе тот же вопрос некоторое время. Одним из недостатков PostgreSQL является то, что он, похоже, не поддерживает двигатели хранения IN MEMORY, как это делает MySQL...

В любом случае я столкнулся с статьей пару недель назад, описывая, как это можно сделать; хотя он работает только в Linux. Я действительно не могу ручаться за него, потому что я сам его не пробовал, но, похоже, это имеет смысл, поскольку табличное пространство PostgreSQL действительно назначено смонтированным репозиторием.

Однако даже при таком подходе я не уверен, что вы могли бы поместить ваши индексы в оперативную память; Я не думаю, что MySQL заставляет индекс HASH использовать его таблицу IN MEMORY ни для чего...

Я также хотел сделать аналогичную вещь для повышения производительности, поскольку я также работаю с огромными наборами данных. Я использую python; у них есть словарные типы данных, которые являются в основном хэш-таблицами в виде пар {ключ: значение}. Их использование очень эффективно и эффективно. В принципе, чтобы получить таблицу PostgreSQL в ОЗУ, я загружаю ее в такой словарь python, работаю с ней и время от времени сохраняю ее в db; его стоит, если он хорошо используется.

Если вы не используете python, я уверен, что это аналогичная структура данных, сопоставляющая словари на вашем языке.

Надеюсь, это поможет!

Ответ 4

Только с базой данных 8 ГБ, если вы уже оптимизировали всю активность SQL и готовы решить проблемы с аппаратным обеспечением, я предлагаю вам проблемы. Это просто не масштабируемое решение в долгосрочной перспективе. Вы уверены, что вы ничего не можете сделать, чтобы внести существенные различия в сторону разработки программного обеспечения и базы данных?

Ответ 5

Настройте старомодный RAMdisk и сообщите pg, чтобы сохранить там свои данные.

Убедитесь, что вы хорошо поддерживаете его.