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).

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top