Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es schneller, MySQL auf localhost anstelle einer Domäne zu verbinden/zu verwenden (selbst wenn die Domäne auf denselben Computer aufgelöst wird)?

Die direkte Verwendung der IP-Adresse einer beliebigen Schnittstelle auf dem Localhost - entweder die Loopback-Schnittstelle (127.0.0.1) oder eine andere - ist die Option mit der absolut besten Leistung. Die Pakete werden tatsächlich mit - praktisch - CPU-Geschwindigkeit durch die Loopback-Schnittstelle geleitet (egal welche IP tatsächlich verwendet wird).

Es gibt jedoch drei Gründe, 127.0.0.1 den IPs der anderen Schnittstellen vorzuziehen:

  • Die Loopback-Schnittstelle ist entscheidend für den Betrieb des Systems und wird daher sehr früh im Boot-Prozess initialisiert und ist fast immer verfügbar.

  • Es wird nicht von externen Faktoren beeinflusst:Während das Entfernen des eth0-Kabels den Zugriff von localhost auf sich selbst über die IP von eth0 nicht unterbricht, wird es es vermasseln Sie die Dinge, wenn Sie eines der vielen "Autokonfigurations"-Systeme haben, die die Schnittstelle bei Verbindungsverlust glücklich herunterfahren.

  • Wenn Sie eine Firewall eingerichtet haben, ist es durchaus möglich, dass die Regelkette länger (und damit etwas schlechter in der Leistung) ist, wenn die IPs der öffentlichen Schnittstellen involviert sind.

Wenn Sie Hostnamen verwenden, wird der Localhost-Hostname normalerweise durch eine /etc/hosts-Suche aufgelöst, was sehr ist schnell, obwohl die direkte Verwendung der IP diese Suche vollständig entfernt. Abhängig von Ihrem Setup werden sie auch im Speicher zwischengespeichert, sodass sie später fast blendend schnell sind.

Wenn Sie einen öffentlichen Hostnamen verwenden, kann dies eine DNS-Abfrage beinhalten, die eine zusätzliche CPU-Auslastung und Netzwerklatenz impliziert. Die Verwendung eines Caching-Nameservers auf dem lokalen Host wird dieses Problem meistens beseitigen. Beachten Sie jedoch, dass es immer noch ein Problem geben kann, wenn Ihr DNS-Dienst unzuverlässig wird.

Der einzige Vorteil bei der Verwendung eines öffentlichen Hostnamens wäre, wenn es so etwas wie db.example.com wäre. wodurch Sie Ihre Datenbank auf einen separaten Server verschieben können, ohne die Konfiguration der Clients ändern zu müssen.

Da Sie JDBC verwenden, gehe ich davon aus, dass Sie eine einzige Verbindung für alle Ihre Abfragen wiederverwenden. In diesem Fall sollte der Aufwand für die Auflösung des Hostnamens selbst in allen Fällen vernachlässigbar sein, es sei denn, Sie haben es mit einem defekten DNS-Server zu tun. Es könnte jedoch immer noch ein Vorteil sein, die Adresse 127.0.0.1 wegen ihrer potenziell effizienteren Firewall-Einrichtung zu wählen.