Quer entender melhor esses comandos? Vai no post http://fabriziomello.github.io/blog/2010/06/27/postgresql-na-memoria-ram-in-memory/ de onde tirei.
- Montando partição em memória com
tmpfs
:
$ sudo -s
$ mkdir /mnt/in_memory
$ mount -t tmpfs -o size=2G,nr_inodes=8k,mode=0700 tmpfs /mnt/in_memory/
- Criando cluster na partição criada:
$ chown -R postgres. /mnt/in_memory/
$ su - postgres -c “/usr/lib/postgresql/8.3/bin/initdb -D /mnt/in_memory”
- Ajustando configurações do cluster (conforme recomendações do artigo citado):
$ vim /mnt/in_memory/postgresql.conf
fsync=off
synchronous_commit=off
full_page_writes=off
bgwriter_lru_maxpages=0
Obs: caso vc já tenha algum processo do PostgreSQL executando na mesma máquina desse teste então vc deve verificar se não será necessário modificar também a variável port
do postgresql.conf
, pois o padrão é 5432
.
- Iniciando processo servidor:
$ su - postgres -c “/usr/lib/postgresql/8.3/bin/pg_ctl -D /mnt/in_memory -l /mnt/in_memory/postgres.log start”
- Verificando se o cluster está funcionando:
$ ps ax | grep post
19614 pts/3 S 0:00 /usr/lib/postgresql/8.3/bin/postgres -D /mnt/in_memory
19653 ? Ss 0:00 postgres: writer process
19654 ? Ss 0:00 postgres: wal writer process
19655 ? Ss 0:00 postgres: autovacuum launcher process
19656 ? Ss 0:00 postgres: stats collector process
$ /usr/lib/postgresql/8.3/bin/psql -U postgres -p 5437 -l
Lista dos bancos de dados
Nome | Dono | Codificação
———–+———-+————-
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(3 registros)
Acredito que neste ponto você já esteja com o seu PostgreSQL na memória pronto e funcional.
Lembre-se que o mesmo está “literalmente” na memória RAM, portanto ao desligar o micro o seu cluster inteiro será perdido, por isso o seu uso fica limitado como um Cache ao invés do uso do memcached ou alternativas NoSQL, porém com todos recursos disponíveis no PostgreSQL.