Maison >base de données >tutoriel mysql >MySql utilise skip-name-resolve pour résoudre le problème selon lequel le client de connexion réseau externe est trop lent.

MySql utilise skip-name-resolve pour résoudre le problème selon lequel le client de connexion réseau externe est trop lent.

小云云
小云云original
2017-12-25 14:24:502312parcourir

Cet article explique principalement comment utiliser skip-name-resolve dans MySql pour résoudre le problème de la lenteur du client de liaison réseau externe. MySQL construit sur Tencent Cloud est toujours très lent lorsqu'il est accédé par Navicat sur l'ordinateur de développement. Il s'avère que MySQL effectuera la résolution du nom de domaine sur l'adresse demandée et que l'ordinateur de développement n'a pas de nom de domaine, ce sera donc extrêmement lent. .

Mysql construit sur Tencent Cloud est toujours très lent lorsqu'il est accessible à l'aide de navicat sur l'ordinateur de développement. Il s'avère que Mysql effectuera la résolution de nom de domaine sur l'adresse demandée et que l'ordinateur de développement n'a pas de nom de domaine, donc cela provoquera extrêmement lent, utilisez ce qui suit pour le résoudre


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

Explication officielle

Comment MySQL
utilise DNS Lorsqu'un nouveau fil de discussion se connecte à mysqld, mysqld créera un nouveau thread pour gérer la requête. Ce fil vérifiera d'abord si le nom d'hôte est dans le cache du nom d'hôte. Sinon, le thread appellera gethostbyaddr_r() et gethostbyname_r(. ) pour résoudre le nom d'hôte. Si
le système d'exploitation ne prend pas en charge les appels thread-safe ci-dessus, le
thread verrouillera un mutex et appellera gethostbyaddr() et gethostbyname()
à la place. dans ce cas, aucun autre thread ne peut résoudre d'autres
noms d'hôte qui ne sont pas dans le cache des noms d'hôte jusqu'à ce que le premier thread soit
prêt. Vous pouvez désactiver la recherche d'hôte DNS en démarrant mysqld avec
–skip-name-resolve In. dans ce cas, vous ne pouvez cependant utiliser les noms IP que dans
les tables de privilèges MySQL. Si vous avez un DNS très lent et de nombreux
hôtes, vous pouvez obtenir plus de performances en désactivant la recherche DNS
avec –skip-name. -resolve ou en augmentant la définition HOST_CACHE_SIZE
(par défaut : 128) et recompilez mysqld Vous pouvez désactiver le cache du nom d'hôte
avec –skip-host-cache Vous pouvez vider le cache du nom d'hôte avec
FLUSH HOSTS ou. mysqladmin flush-hosts . Si vous ne souhaitez pas autoriser les
connexions via TCP/IP, vous pouvez le faire en démarrant mysqld avec
–skip-networking.

Selon la documentation, si votre requête d'hôte MySQL Si le DNS est très lent ou s'il existe de nombreux hôtes clients, la connexion sera très lente. Puisque notre machine de développement ne peut pas se connecter au réseau externe, la résolution DNS ne peut pas être terminée, nous comprenons donc pourquoi la connexion est si lente. . Dans le même temps, veuillez noter qu'après l'ajout de ce paramètre de configuration, le champ host dans la table d'autorisation mysql ne peut pas utiliser de noms de domaine mais uniquement des adresses IP, car cela est le résultat de l'interdiction de la résolution de noms de domaine.

Recommandations associées :


Tutoriel d'exemple de client de connexion longue http Python

Solution au problème d'anti-résolution DNS MySQL étant une méthode trop lente

Comment résoudre le problème de la connexion mysql lente_MySQL

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn