Necessidade de carregar todo o banco de dados PostgreSQL na RAM
-
03-07-2019 - |
Pergunta
Como faço para colocar todo o meu banco de dados PostgreSQL na RAM para um acesso mais rápido ?? Eu tenho memória de 8GB e Quero dedicar 2 GB para o DB. Eu li sobre as configurações de buffers compartilhados, mas ele só armazena em cache o fragmento mais acessados ??do banco de dados. Eu precisava de uma solução onde toda a DB é colocado na RAM e qualquer leitura que aconteceria a partir da RAM DB e qualquer operação de gravação em primeiro lugar escrever na RAM DB e, em seguida, o DB no disco rígido. (Alguma coisa como o padrão fsync = com buffers compartilhados em definições de configuração PostgreSQL).
Solução
Eu me fez a mesma pergunta por um tempo. Uma das desvantagens do PostgreSQL é que ele não parece apoiar um mecanismos de armazenamento na memória como o MySQL faz ...
De qualquer forma eu corri para um casal artigo de semanas atrás descrevendo como isso poderia ser feito; embora só parece funcionar no Linux. Eu realmente não posso garantir isso porque eu não tentei me, mas parece fazer sentido uma vez que a tabela PostgreSQL é realmente atribuído um montado repositório.
No entanto, mesmo com esta abordagem, eu não tenho certeza que você pode colocar seu índice (s) para a RAM também; Eu não acho MySQL forças HASH uso de índice com a sua mesa na memória para nada ...
Eu também queria fazer uma coisa semelhante para melhorar o desempenho para que eu também estou trabalhando com grandes conjuntos de dados. Eu estou usando python; eles têm tipos de dados de dicionário, que são basicamente tabelas hash na forma de {chave: valor} pares. Usando estas é muito eficiente e eficaz. Basicamente, para obter minha mesa PostgreSQL na RAM, eu carregá-lo em tais dicionário de python, trabalhar com ele, e persistem-lo em db vez em quando; vale a pena se for bem utilizado.
Se você não estiver usando python, eu tenho certeza que a sua é uma estrutura semelhante dicionário de dados de mapeamento no seu idioma.
Espero que isso ajude!
Outras dicas
Se você está puxando os dados de identificação, uso memcached - http://www.danga.com/memcached / + PostgreSQL.
Talvez algo como um Tangosol coerência de cache se você estiver usando Java .
Com apenas um banco de dados 8GB, se você já otimizado toda a atividade SQL e você está pronto resolver consulta problemas com hardware, eu sugiro que você está em apuros. Este não é apenas uma solução escalável no longo prazo. Tem certeza que não há nada que você pode fazer para tornar diferenças substanciais no lado de design de software e banco de dados?
Configurar uma RAMdisk antiquado e dizer pg para armazenar seus dados lá.
Certifique-se de guardá-lo bem embora.