Estou executando um site Drupal apoiado pelo Postgres. Esta é a primeira vez que executo algo com o Postgres; Eu venho do mundo MySQL.
Para fazer o trabalho de desenvolvimento no site, eu me conecto a uma VPN e encapsula meu tráfego por meio de uma máquina que possui um IP permitido em pg_hba.conf.
As consultas estão voltando muito devagar. Meus logs me dizem que carregar a página inicial no servidor dev:
Executed 86 queries in 84.26 ms
E na minha máquina local (com a conexão remota):
Executed 87 queries in 22368.05 ms
As consultas são 80% SELECT, com alguns INSERT INTOs.
Fiz alguns ajustes rudimentares também no servidor db, esperando acelerar as coisas para a conexão remota (o ajuste não, mas certamente fez com que as consultas do servidor de desenvolvimento voltassem mais rápido!).
Nos arquivos de configuração db do servidor, desativei o ssl e permiti apenas conexões de localhost e ips dentro da VPN. Estou autenticando usuários db via md5.
O atraso pode estar passando por esta VPN? Ou pode ter a ver com o fato de o banco de dados estar sendo acessado de dois locais diferentes com o mesmo nome de usuário/senha?
Se a única diferença for local versus remoto, o problema deve ser o tempo de ida e volta. A execução da consulta interna real não está ciente do tipo de conexão usada. No entanto, também me pergunto se você também está executando seu sistema de desenvolvimento em um banco de dados diferente. Nesse caso, o armazenamento em cache pode ser muito diferente e também pode fazer uma diferença significativa.
Eu vejo algumas maneiras de resolver esse problema. A primeira é apenas ter uma cópia dev do banco de dados do site em seu sistema dev. Esses dados podem ser limpos para que, se o seu sistema de desenvolvimento for comprometido ou perdido (supondo que seja um laptop, por exemplo), a exposição dos dados seja mínima. Em seguida, você pode testar o desempenho em um sistema que pode fazer cache específico para o seu trabalho de desenvolvimento e não terá ida e volta.
A segunda abordagem é construir um túnel muito mais rápido e possivelmente lançar muito mais RAM no servidor db.