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

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


person Bharath    schedule 02.01.2009    source источник
comment
Кстати, это для веб-сайта, для которого я использую Python и фреймворк django.   -  person Bharath    schedule 02.01.2009


Ответы (5)


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

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

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

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

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

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

person Nicholas Leonard    schedule 04.01.2009
comment
Статья больше не доступна по этой ссылке. На Archive.org он есть: https://web.archive.org/web/20080517112936/http://www.redhatmagazine.com/2007/12/12/tip-from-an-rhce-memory.-storage-on-postgresql/ - person Otheus; 02.03.2017

если вы извлекаете данные по идентификатору, используйте memcached — http://www.danga.com/memcached/ + postgresql.

person l_39217_l    schedule 14.01.2009

Возможно, что-то вроде кеша Tangosol Coherence, если вы используете Java.

person duffymo    schedule 02.01.2009

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

person dkretz    schedule 04.01.2009

Настройте старомодный RAMdisk и скажите pg хранить там свои данные.

Убедитесь, что у вас есть резервная копия.

person Marsh Ray    schedule 02.06.2009
comment
не потеряет ли он их данные при перезагрузке сервера? - person SDReyes; 04.06.2012