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

13

Muitos aplicativos me permitem conectar ao Mysql usando um nome de usuário, host de senha e porta. Alguns permitem-me configurar um socket 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 assim for, há benefícios em usar esse soquete em vez de se conectar a localhost:3306 ?

Eu não estou muito familiarizado com os prós e contras de redes e sockets, então talvez eu esteja completamente perdendo alguma informação crucial e minha pergunta seja simplesmente estúpida; se assim for, você poderia explicar o que eu sinto falta?

    
por berkes 11.01.2013 / 13:19

1 resposta

14

Bem, é simples.

O 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, tanto quanto eu entendo soquetes, eles são apenas a combinação de host + porta, apenas no formato de arquivo. Então, eu não vejo nenhum benefício claro em usar qualquer um deles (tanto quanto meu conhecimento vai).

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

Copie a postagem de alguma postagem antiga :

Unix sockets are a little bit faster as you don't have the tcp-overhead. If you realize this performance loss is a question of server load. If you don't have very high server load you won't recognize it.

If you use Jails (FreeBSD) or some other virtualisation technology to separate the e.g. MySQL-Server from the Webserver, you often use the tcp/ip setup instead of sockets. The firewall rules need to restrict the access though.

You need to find out if your system is under heavy load so that a socket is a must or you can focus on a nice system design (separating services), then a tcp/ip solution would be better.

So make a long answer short:

Yes, there is a performance difference, sockets are faster. If you are not suffering high server load, just choose what fits better to your system's design.

    
por 11.01.2013 / 13:41