Quando usar um soquete MySQL e quando usar um host: port?

19

Muitos aplicativos permitem que eu me conecte ao Mysql usando um nome de usuário, host e porta de senha. Alguns permitem configurar um soquete em vez do host:port.

Existe algum benefício claro de um sobre o outro? Eu posso imaginar que um soquete só funciona quando o MySQL está na mesma máquina. É assim mesmo? E se sim, há benefícios em usar esse soquete em vez de conectar-se localhost:3306?

Não estou muito familiarizado com as entradas e saídas de redes e soquetes, então talvez esteja perdendo completamente algumas informações cruciais e minha pergunta seja simplesmente estúpida; Se sim, você poderia explicar o que estou perdendo?

berkes
fonte

Respostas:

19

Bem, é simples.

Soquete é uma comunicação baseada em arquivo e você não pode acessar o soquete de outra máquina.

Por outro lado, as portas estão abertas para o mundo (depende da configuração) e você pode acessar o mysql de outra máquina usando a combinação host + porta.

Além disso, por mais que eu entenda soquetes, eles são apenas uma combinação de host + porta, apenas no formato de arquivo. Portanto, não vejo nenhum benefício claro no uso de nenhum deles (tanto quanto meu conhecimento).

Embora eu pessoalmente prefira usar host + port, pois meu código se torna mais flexível, pois posso movê-lo para outra máquina, sem alterar muito.

Copie a colagem de uma postagem antiga :

Os soquetes Unix são um pouco mais rápidos, pois você não possui o tcp-overhead. Se você perceber que essa perda de desempenho é uma questão de carga do servidor. Se você não tiver uma carga de servidor muito alta, não a reconhecerá.

Se você usa o Jails (FreeBSD) ou alguma outra tecnologia de virtualização para separar o servidor MySQL, por exemplo, do servidor da Web, geralmente usa a configuração tcp / ip em vez de soquetes. As regras de firewall precisam restringir o acesso.

Você precisa descobrir se o seu sistema está sob carga pesada, de modo que um soquete é obrigatório ou se você pode se concentrar em um bom design de sistema (serviços de separação), então uma solução tcp / ip seria melhor.

Portanto, faça uma resposta longa curta:

Sim, há uma diferença de desempenho, os soquetes são mais rápidos. Se você não está sofrendo muita carga do servidor, basta escolher o que melhor se adapta ao design do seu sistema.

GeekRide
fonte
Mas quando eu tenho ambos, quando o mysqld mora na mesma máquina que o cliente; existem diferenças no uso de um sobre o outro? Um é mais leve, mais eficiente, mais propenso a erros ou o que quer que seja?
Berkes
Apenas atualizei a resposta com mais algumas informações.
GeekRide 11/01
E mais algumas informações.
GeekRide