Skip to content

Instantly share code, notes, and snippets.

@tinogomes
Created September 14, 2023 12:47
Show Gist options
  • Save tinogomes/018491f2eba5a41e1b2454cd5f208a02 to your computer and use it in GitHub Desktop.
Save tinogomes/018491f2eba5a41e1b2454cd5f208a02 to your computer and use it in GitHub Desktop.
Usanfo PostgreSQL na Memória (não testei, apenas salvei)

PostgreSQL Na Memória

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.

  1. 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/
  1. 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”
  1. 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.

  1. 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”
  1. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment