Wann sollte ein MySQL-Socket und wann ein Host verwendet werden: Port?

19

In vielen Anwendungen kann ich über einen Benutzernamen, ein Kennwort, einen Host und einen Port eine Verbindung zu MySQL herstellen. Einige erlauben mir, eine Steckdose anstelle der zu konfigurieren host:port.

Gibt es einen klaren Vorteil gegenüber dem anderen? Ich kann mir vorstellen, dass ein Socket nur funktioniert, wenn sich MySQL auf demselben Computer befindet. Ist das so? Und wenn ja, gibt es Vorteile gegenüber der Verwendung dieser Buchse, anstatt eine Verbindung herzustellen localhost:3306?

Ich bin nicht sehr vertraut mit den Vor- und Nachteilen von Netzwerken und Sockets, daher fehlen mir möglicherweise einige wichtige Informationen, und meine Frage ist einfach nur dumm. Wenn ja, können Sie mir erklären, was ich vermisse?

Berkes
quelle

Antworten:

19

Nun, es ist ganz einfach.

Socket ist eine dateibasierte Kommunikation, und Sie können von einem anderen Computer aus nicht auf den Socket zugreifen.

Auf der anderen Seite sind die Ports offen für die Welt (abhängig von der Konfiguration) und Sie können von einem anderen Computer mit der Kombination Host + Port auf MySQL zugreifen.

Soweit ich Sockets verstehe, handelt es sich nur um eine Kombination aus Host und Port, nur im Dateiformat. Daher sehe ich keinen klaren Vorteil darin, einen von ihnen zu verwenden (so weit mein Wissen reicht).

Ich persönlich bevorzuge die Verwendung von Host + Port, da mein Code flexibler wird, da ich ihn auf den anderen Computer verschieben kann, ohne viel zu ändern.

Kopieren Sie das Einfügen aus einem alten Beitrag :

Unix-Sockets sind etwas schneller, da Sie keinen TCP-Overhead haben. Wenn Sie feststellen, dass dieser Leistungsverlust eine Frage der Serverlast ist. Wenn die Serverlast nicht sehr hoch ist, wird sie nicht erkannt.

Wenn Sie Jails (FreeBSD) oder eine andere Virtualisierungstechnologie verwenden, um z. B. den MySQL-Server vom Webserver zu trennen, verwenden Sie häufig das TCP / IP-Setup anstelle von Sockets. Die Firewall-Regeln müssen den Zugriff jedoch einschränken.

Sie müssen herausfinden, ob Ihr System stark ausgelastet ist, damit ein Socket ein Muss ist, oder Sie können sich auf ein ansprechendes Systemdesign (Trennen von Diensten) konzentrieren. Dann ist eine TCP / IP-Lösung besser.

Also mach eine lange Antwort kurz:

Ja, es gibt einen Leistungsunterschied, die Steckdosen sind schneller. Wenn Sie nicht unter hoher Serverauslastung leiden, wählen Sie einfach, was besser zum Design Ihres Systems passt.

GeekRide
quelle
Aber wenn ich beides habe, wenn mysqld auf demselben Rechner wie der Client läuft; Gibt es Unterschiede in der Verwendung übereinander? Ist einer leichter, performanter, fehleranfälliger oder was auch immer als der andere?
Berkes
Habe gerade die Antwort mit ein paar Infos aktualisiert.
GeekRide
Und noch ein paar Infos.
GeekRide