Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

É mais rápido conectar/usar o MySQL no localhost em vez de um domínio (mesmo que o domínio resolva para o mesmo computador)?


Usar diretamente o endereço IP de qualquer interface no host local - seja a interface de loopback (127.0.0.1) ou qualquer outra - é a opção com o melhor desempenho. Os pacotes serão realmente roteados através da interface de loopback (não importa qual IP seja realmente usado) na - praticamente - velocidade da CPU.

Há três razões, no entanto, para preferir 127.0.0.1 sobre os IPs das outras interfaces:

  • A interface de loopback é crucial para a operação do sistema e, como tal, é inicializada muito cedo no processo de inicialização e quase sempre disponível.

  • Ele não é afetado por fatores externos:enquanto a remoção do cabo eth0 não interromperá por si só o acesso do localhost a si mesmo via IP do eth0, ele irá estragar as coisas se você tiver algum dos muitos sistemas de "autoconfiguração" que desligarão alegremente a interface na perda de link.

  • Se você tiver uma configuração de firewall, é bem possível que a cadeia de regras seja mais longa (e, portanto, um pouco pior em termos de desempenho) quando os IPs das interfaces públicas estiverem envolvidos.

Se você estiver usando nomes de host, o nome de host localhost será normalmente resolvido por uma pesquisa /etc/hosts que é muito rápido, embora usar o IP diretamente remova completamente essa pesquisa. Dependendo da sua configuração, muitos também podem ser armazenados em cache na memória para que seja quase incrivelmente rápido mais tarde.

Se você usar um nome de host público, isso pode envolver uma consulta DNS que implica em uso adicional de CPU e latência de rede. Usar um servidor de nomes de cache no host local removerá principalmente esse problema. No entanto, lembre-se de que ainda pode haver um problema se o serviço DNS ficar instável.

A única vantagem de usar um nome de host público seria se fosse algo como db.example.com. que permite mover seu banco de dados para um servidor separado sem precisar alterar a configuração dos clientes.

Como você está usando JDBC, presumo que você esteja reutilizando uma única conexão para todas as suas consultas; nesse caso, a sobrecarga de resolução do nome do host deve ser insignificante em todos os casos, a menos que você precise lidar com um servidor DNS quebrado. No entanto, ainda pode haver algum mérito em escolher o endereço 127.0.0.1 para sua configuração de firewall potencialmente mais eficiente.