Несмотря на то что PostgreSQL является довольно мощной базой данных, в ней отсутствует полноценная поддержка хранения таблиц в оперативной памяти.
Ниже я расскажу как заставить PostgreSQL хранить выбранные таблицы в оперативной памяти для быстрых операций с ними.
Всё будет происходить в Debian.
Создадим пустую папку для монтирования
mkdir /mnt/ramfs
И смонтируем в неё ramfs
mount -t ramfs none /mnt/ramfs
Создадим папку для PostgreSQL и назначим на неё права.
mkdir /mnt/ramfs/pgdata
chown postgres:postgres /mnt/ramfs/pgdata
chmod 600 /mnt/ramfs/pgdata
Далее зайдём под суперпользователем базы данных PostgreSQL — postgres
su postgres
psql
И создадим новый TABLESPACE
, размещение которого мы укажим в папке с смонтированной ramfs
postgres=# CREATE TABLESPACE ram LOCATION '/mnt/ramfs/pgdata';
Выдадим права на работу с этом TABLESPACE
нашему пользователю (например myuser
)
postgres=# GRANT CREATE ON TABLESPACE ram TO myuser;
Теперь нам осталось только создать новую таблицу и указать при её создании TABLESPACE ram
.
Например:
CREATE TABLE mytesttable (
begin_ip ip4 NOT NULL,
end_ip ip4 NOT NULL,
begin_num bigint NOT NULL,
end_num bigint NOT NULL,
country_code character(2) NOT NULL,
country_name character varying(255) NOT NULL,
ip_range ip4r
)
TABLESPACE ram;
Теперь PostgreSQL будет работать с этой таблицей как и с другими даже не подозревая что она «лежит» в ОЗУ.