Eu sou bastante novo no PostgreSQL. Comecei a migrar alguns bancos de dados MySQL para PostgreSQL há um mês.
Estou procurando ajuda sobre os valores de memória adequados para o arquivo de configuração.
Atualmente, tenho um modesto servidor dedicado (2 GB de RAM) executando Apache, MySQL e PostgreSQL no Linux. O banco de dados MySQL principal tem cerca de 3 vezes o tamanho do banco de dados principal do PostgreSQL, e o mesmo pode ser dito para o tráfego de dados.
Ainda tenho o arquivo de configuração padrão do PostgreSQL, tendo o parâmetro shared_buffers = 32MB
. Presumo que devo aumentar este valor, mas não quero penalizar as outras bases de dados. Eu li algo sobre dedicar 25% da memória física disponível ao PostgreSQL, mas não tenho certeza disso.
O novo banco de dados contém sete tabelas, sendo a maior delas com cerca de 3 MM de linhas. A máquina tem atualmente um baixo tráfego (servindo cerca de 10000 ~ 20000 selects por dia), mas estes valores deverão crescer.
Eu estava pensando em aumentar o shared_buffers para 256 MB, mas gostaria de ouvir algumas opiniões de usuários com mais experiência com este RDBMS.
Eu evitaria colocar MySQL e PostgreSQL no mesmo servidor. Eles competem pelos mesmos recursos. Se puder , transfira tudo para um RDBMS. Minha escolha óbvia seria o PostgreSQL.
Em seguida, você pode definir
shared_buffers
algo como 500 MB eeffective_cache_size
algo como 1,5 GB. Certifique-se de ler as dicas no manual .Mas eu também recomendaria adicionar mais RAM física. 2 GB não é muito. Dificilmente o suficiente para um bom desempenho com milhões de linhas. Mais alguns GB de RAM não devem custar muito.
Se você tiver que manter sua configuração, 250 MB para Postgres parece razoável. Se o MySQL tiver três vezes mais tráfego, menos pode ser melhor no geral. Como 128 MB.
Noções básicas para otimização de desempenho no Wiki do Postgres.