
Peço desculpas se meu texto não estiver totalmente correto - sou muito novo em tudo isso.
Meta:Estou tentando melhorar a velocidade com que obtenho dados do meu banco de dados
Configurar:
Estou hospedando o banco de dados no servidor A. O banco de dados também pode ser acessado por meio de um site como www. meudbweb . com (não é meu site real, ofc). Esse acesso no lado do servidor acontece via Nginx com rotas para algo como localhost:1234
.
Pergunta:Se eu logar no servidor e fizer uma solicitação ao banco de dados através do site (ou seja www.mydbweb.com
), os dados serão buscados pela rede (certo?), mas se eu fizer uma solicitação localhost:1234
diretamente, isso significaria que nenhum dado será passado a rede?
Em geral, existe uma forma de ignorar os dados que estão sendo buscados na rede? Sinto que a rede introduz algum tipo de latência ou gargalo para grandes consultas de dados.
Responder1
Depende um pouco do sistema operacional e da configuração da rede, mas geralmente não há diferença significativa de velocidade na comunicação com um endereço IP externo de um servidor ou com o endereço IP localhost/loopback, já que normalmente o sistema operacional e a pilha de rede estão cientes de que o o endereço IP externo também é “esta máquina” e os pacotes não saem pela rede, mas permanecem na memória.
Mas a camada de abstração adicional do nginx no caminho entre seu aplicativo e o banco de dados adicionará latência em comparação com a comunicação direta entre os dois.
A maneira mais rápida de conectar seu aplicativo ao banco de dados (quando ambos estão rodando no mesmo host) é através de um soquete Unix (para um banco de dados rodando em Linux ou sistema operacional Unix semelhante) ou uma conexão direta semelhante. Tal conexão elimina a necessidade de encapsular as solicitações e respostas em pacotes de rede.