¿Cuándo usar un socket MySQL y cuándo usar un host: puerto?

19

Muchas aplicaciones me permiten conectarme a Mysql usando un nombre de usuario, contraseña de host y puerto. Algunos me permiten configurar un socket en lugar de host:port.

¿Hay algún beneficio claro de uno sobre el otro? Me imagino que un socket solo funciona cuando MySQL está en la misma máquina. ¿Es eso así? Y si es así, ¿hay beneficios por usar ese zócalo en lugar de conectarse localhost:3306?

No estoy demasiado familiarizado con los entresijos de las redes y los sockets, por lo que tal vez me falta algo de información crucial y mi pregunta es simplemente estúpida; Si es así, ¿podría explicar lo que me falta?

Berkes
fuente

Respuestas:

19

Bueno, es simple

Socket es una comunicación basada en archivos, y no puede acceder al socket desde otra máquina.

Por otro lado, los puertos están abiertos al mundo (depende de la configuración) y puede acceder al mysql desde otra máquina utilizando la combinación de host + puerto.

Además, por mucho que entiendo los sockets, son solo una combinación de host + puerto, solo en el formato de archivo. Por lo tanto, no veo ningún beneficio claro en el uso de ninguno de ellos (según mi conocimiento).

Aunque personalmente prefiero usar host + puerto, ya que mi código se vuelve más flexible, ya que puedo moverlo a la otra máquina, sin cambiar mucho.

Copie el pegado de alguna publicación anterior :

Los sockets Unix son un poco más rápidos, ya que no tiene el tcp-gastos generales. Si se da cuenta de que esta pérdida de rendimiento es una cuestión de carga del servidor. Si no tiene una carga de servidor muy alta, no la reconocerá.

Si usa Jails (FreeBSD) o alguna otra tecnología de virtualización para separar, por ejemplo, el servidor MySQL del servidor web, a menudo usa la configuración tcp / ip en lugar de sockets. Sin embargo, las reglas del firewall deben restringir el acceso.

Debe averiguar si su sistema está bajo una gran carga para que un socket sea imprescindible o si puede centrarse en un buen diseño del sistema (servicios de separación), entonces una solución tcp / ip sería mejor.

Entonces haga una respuesta larga corta:

Sí, hay una diferencia de rendimiento, los enchufes son más rápidos. Si no sufre una alta carga del servidor, simplemente elija lo que mejor se adapte al diseño de su sistema.

GeekRide
fuente
Pero cuando tengo ambos, cuando mysqld vive en la misma máquina que el cliente; ¿Hay diferencias en el uso de uno sobre el otro? ¿Es uno más ligero, más eficiente, propenso a errores o lo que sea el otro?
Berkes
Acabo de actualizar la respuesta con más información.
GeekRide
Y algo más de información.
GeekRide