Quand utiliser un socket MySQL et quand utiliser un hôte: port?

19

De nombreuses applications me permettent de me connecter à Mysql en utilisant un nom d'utilisateur, un hôte de mot de passe et un port. Certains me permettent de configurer un socket au lieu du host:port.

Y a-t-il un avantage clair de l'un sur l'autre? Je peux imaginer qu'un socket ne fonctionne que lorsque MySQL est sur la même machine. Est-ce vrai? Et si oui, y a-t-il des avantages à utiliser cette prise au lieu de la connecter localhost:3306?

Je ne connais pas trop les tenants et aboutissants des réseaux et des sockets, alors peut-être que je manque complètement des informations cruciales et ma question est tout simplement stupide; si oui, pourriez-vous expliquer ce qui me manque?

berkes
la source

Réponses:

19

Eh bien, c'est simple.

Le socket est une communication basée sur un fichier et vous ne pouvez pas accéder au socket à partir d'une autre machine.

D'un autre côté, les ports sont ouverts sur le monde (dépend de la configuration) et vous pouvez accéder au mysql depuis une autre machine en utilisant une combinaison hôte + port.

Aussi, autant que je comprends les sockets, ce ne sont que des combinaisons hôte + port, juste au format de fichier. Donc, je ne vois aucun avantage clair à utiliser l'un d'eux (autant que je sache).

Bien que je préfère personnellement utiliser host + port, car mon code devient plus flexible, car je peux le déplacer vers l'autre machine, sans beaucoup changer.

Copiez le collage d' un ancien message :

Les sockets Unix sont un peu plus rapides car vous n'avez pas le tcp-overhead. Si vous réalisez que cette perte de performances est une question de charge du serveur. Si vous n'avez pas une charge de serveur très élevée, vous ne la reconnaîtrez pas.

Si vous utilisez Jails (FreeBSD) ou une autre technologie de virtualisation pour séparer par exemple le serveur MySQL du serveur Web, vous utilisez souvent la configuration tcp / ip au lieu des sockets. Les règles du pare-feu doivent cependant restreindre l'accès.

Vous devez savoir si votre système est soumis à une charge élevée afin qu'un socket soit un must ou vous pouvez vous concentrer sur une conception de système agréable (séparation des services), alors une solution tcp / ip serait mieux.

Donc, faites une réponse courte et courte:

Oui, il y a une différence de performances, les sockets sont plus rapides. Si vous ne souffrez pas d'une charge de serveur élevée, choisissez simplement ce qui correspond le mieux à la conception de votre système.

GeekRide
la source
Mais quand j'ai les deux, quand mysqld vit sur la même machine que le client; y a-t-il des différences dans l'utilisation de l'une par rapport à l'autre? L'un est-il plus léger, plus performant, sujet aux erreurs ou autre que l'autre?
berkes
Je viens de mettre à jour la réponse avec plus d'informations.
GeekRide
Et quelques informations supplémentaires.
GeekRide