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