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

PostgreSQL в базе данных памяти

Я хочу запустить сервер базы данных PostgreSQL из памяти. Причина в том, что на моем новом сервере у меня 24 ГБ памяти, и почти никто из них не используется.

Я знаю, что могу запустить эту команду, чтобы сделать ramdisk:

mdmfs -s 1024m md2 /mnt

И я мог бы теоретически иметь PostgreSQL для хранения его данных. Но проблема в том, что если сервер сбой или перезагрузка, данные исчезнут.

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

Есть ли способ сделать это, а также записать PostgreSQL на диск, чтобы я не потерял никаких данных, если сервер опустится? Или есть способ кэшировать все данные в памяти?

4b9b3361

Ответ 1

Теперь я использую поточную репликацию, которая является асинхронной. Это означает, что мой MASTER может работать все в памяти, а отдельный экземпляр SLAVE использует традиционный диск.

Перезапуск машины включает в себя остановку SLAVE, копирование данных postgresql обратно в ramdisk, а затем перезапуск MASTER, за которым следует SLAVE. Это была бы интересная возможность, которая хорошо сравнивается с чем-то вроде REDIS, но с преимуществом резервирования /hotstandby/backup/sql/rich toolset и т.д.

Ответ 3

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

Внутри Postgres транзакции гарантируют, что все операции являются атомарными, поэтому, если питание падает при записи в базу данных Postgres, вы потеряете только эту конкретную операцию, а не всю базу данных.

Ответ 4

Ответ - кэширование. Посмотрите на добавление памяти на сервер, а затем настройте PostgreSQL для максимального использования памяти. Кроме того, кеш файловой системы поможет с этим, выполняя некоторые из них автоматически. Вы сможете ускорить работу, как если бы она была в памяти, за исключением первого попадания, в то время как вам не нужно было самостоятельно управлять ею и иметь базу данных, большую, чем физическая память.