Heim  >  Artikel  >  Datenbank  >  MySql verwendet Skip-Name-Resolve, um das Problem zu lösen, dass der externe Netzwerkverbindungs-Client zu langsam ist.

MySql verwendet Skip-Name-Resolve, um das Problem zu lösen, dass der externe Netzwerkverbindungs-Client zu langsam ist.

小云云
小云云Original
2017-12-25 14:24:502296Durchsuche

In diesem Artikel erfahren Sie hauptsächlich, wie Sie Skip-Name-Resolve in MySql verwenden, um das Problem eines langsamen externen Netzwerklink-Clients zu lösen. Das auf Tencent Cloud erstellte MySQL ist immer sehr langsam, wenn Navicat auf dem Entwicklungscomputer darauf zugreift. Es stellt sich heraus, dass MySQL die Domänennamenauflösung für die angeforderte Adresse durchführt und der Entwicklungscomputer keinen Domänennamen hat langsam.

Auf Tencent Cloud basierendes MySQL ist immer sehr langsam, wenn auf dem Entwicklungscomputer mit Navicat zugegriffen wird. Es stellt sich heraus, dass MySQL die Domänennamenauflösung für die angeforderte Adresse durchführt und der Entwicklungscomputer keinen Domänennamen hat. Daher wird es extrem langsam. Verwenden Sie Folgendes, um das Problem zu lösen


[mysqld]
skip-name-resolve
skip-grant-tables

Offizielle Erklärung

Wie MySQL
DNS verwendet, wenn ein neuer Thread erstellt wird stellt eine Verbindung zu mysqld her, mysqld erzeugt einen neuen Thread, um die Anfrage zu bearbeiten. Dieser Thread prüft zunächst, ob sich der Hostname im Hostnamen-Cache befindet. Andernfalls ruft der Thread gethostbyaddr_r() und gethostbyname_r( auf. ), um den Hostnamen aufzulösen.
Das Betriebssystem unterstützt die oben genannten Thread-sicheren Aufrufe.
Der Thread sperrt stattdessen einen Mutex und ruft gethostbyaddr() und gethostbyname() auf In diesem Fall kann kein anderer Thread andere
Hostnamen auflösen, die sich nicht im Hostnamen-Cache befinden, bis der erste Thread
bereit ist. Sie können die DNS-Hostsuche deaktivieren, indem Sie mysqld mit
–skip-name-resolve In starten In diesem Fall können Sie jedoch nur IP-Namen in
den MySQL-Berechtigungstabellen verwenden. Wenn Sie ein sehr langsames DNS und viele
Hosts haben, können Sie entweder die DNS-Suche
mit –skip-name deaktivieren -resolve oder durch Erhöhen der HOST_CACHE_SIZE-Definition (Standard: 128) und Neukompilieren von mysqld. Sie können den Hostnamen-Cache mit –skip-host-cache löschen mysqladmin flush-hosts . Wenn Sie keine
Verbindungen über TCP/IP zulassen möchten, können Sie dies tun, indem Sie mysqld mit
–skip-networking starten.

Laut Dokumentation, wenn Ihre MySQL-Host-Abfrage Wenn der DNS sehr langsam ist oder viele Client-Hosts vorhanden sind, ist die Verbindung sehr langsam. Da unsere Entwicklungsmaschine keine Verbindung zum externen Netzwerk herstellen kann, kann die DNS-Auflösung nicht abgeschlossen werden. Daher verstehen wir, warum die Verbindung so langsam ist . Beachten Sie gleichzeitig, dass das Hostfeld in der MySQL-Autorisierungstabelle nach dem Hinzufügen dieses Konfigurationsparameters keine Domänennamen, sondern nur IP-Adressen verwenden kann, da dies auf das Verbot der Domänennamenauflösung zurückzuführen ist.

Verwandte Empfehlungen:


Beispiel-Tutorial für einen Python-HTTP-Client mit langer Verbindung


Lösung für das Problem der MySQL-DNS-Anti-Auflösung zu langsame Methode

So lösen Sie das Problem der langsamen MySQL-Verbindung_MySQL

Das obige ist der detaillierte Inhalt vonMySql verwendet Skip-Name-Resolve, um das Problem zu lösen, dass der externe Netzwerkverbindungs-Client zu langsam ist.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn