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

Создадим директорию для хранения файлов данных
# mkdir /pg_data

Смонтируем файловую систему ramfs в созданной директории
# mount -t ramfs ramfs /pg_data/
# mount | grep ramfs
ramfs on /pg_data type ramfs (rw,relatime)

Установим  владельца и права для директории
# chown postgres:postgres /pg_data/
# chmod 755  /pg_data/

Создадим табличное пространство для postgresql в директории /pg_data
Дадим права для определенной роли.
create tablespace tb_test location '/pg_data';
create role usr1;
grant all on tablespace tb_test to usr1;

Создадим новую базу данных (example_db) в табличном пространстве tb_test
create database example_db with tablespace = tb_test;

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

Алгоритм остановки базы данных
$ su - postgres
$ /etc/init.d/postgresql stop
$ cp -R /pg_data/* /backups/
# umount /pg_data

Запуск
# mount -t ramfs ramfs /pg_data/
# chown postgres:postgres /pg_data/
# chmod 755  /pg_data/
# su - postgres
$ cp -R /backups/* /pg_data/
$ /etc/init.d/postgresql start

Если включено WAL архивирование, для сохранения скорости операции в памяти, директорию с архивными файлами необходимо также размещать на файловой системе ramfs и копировать до размонтирования.

PostgreSQL анализ и оптимизация базы данных с помощью команды VACUUM

Синтаксис команды
VACUUM [ ( { FULL | FREEZE | VERBOSE | ANALYZE } [, ...] ) ] [ table [ (column [, ...] ) ] ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table ]
VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] ANALYZE [ table [ (column [, ...] ) ] ]

ANALYZE - сбор статистики для планировщика с целью более быстрого выполнения запросов.
VERBOSE - отвечает за вывод подробного отчета.
FULL - метод оптимизации, в котором таблица блокируется на время выполнения и создается ее копия, для чего требуется дополнительное дисковое пространство.
FREEZE - изменение номеров транзакций старше vacuum_freeze_min_age

Анализ и оптимизация текущей базы данных (в примере db1)
# su - postgres
$ psql db1
db1=# vacuum verbose analyze;
db1=# vacuum full;

Анализ таблицы
db1=# vacuum full analyze verbose table_test;
INFO:  vacuuming "public.table_test"
...

Анализ поля таблицы
db1=# vacuum full analyze verbose  table_test(name);

Для включения автоматического выполнения команды VACUUM, снимем символ комментария с параметров, находящихся в разделе AUTOVACUUM PARAMETERS в postgresql.conf . Параметр autovacuum должен быть включен (on).

Проверка включена ли работа автоматического выполнения команды
postgres=# pg_settings where name = 'autovacuum_naptime';

Дополнительная информация