新たなクライアントが mysqld
に接続すると、mysqld
によって要求を処理する新規のスレッドが作成されます。このスレッドでは、まずホスト名がホスト名キャッシュにあるかどうかがチェックされます。ない場合は、ホスト名の解決が試行されます。
オペレーティングシステムがスレッドセーフの
gethostbyaddr_r()
と
gethostbyname_r()
の呼び出しをサポートしている場合、スレッドではこれを使用してホスト名の解決が実行される。
オペレーティングシステムがスレッドセーフの呼び出しをサポートしていない場合、スレッドでは相互排除ロックを行い、代わりに
gethostbyaddr()
と
gethostbyname()
が呼び出される。この場合、他のスレッドでは最初のスレッドが相互排除ロックを解除するまでホスト名キャッシュ内のホスト名を解決できなくなることに注意する。
--skip-name-resolve
を
mysqld
オプションを指定して起動すると、DNS
ホスト名ルックアップを無効化できます。ただし、この場合は、MySQL
権限テーブルで IP
番号しか使用できなくなります。
非常に低速の DNS
と多数のホストがある場合は、--skip-name-resolve
で DNS
ルックアップを無効化するか、HOST_CACHE_SIZE
の定義(デフォルト値:
128)を拡張し、mysqld
を再コンパイルすることで、パフォーマンスを改善できます。
--skip-host-cache
オプションを使用してサーバを起動すると、ホスト名キャッシュを無効化できます。ホスト名のキャッシュをクリアするには、FLUSH
HOSTS
ステートメントを使用するか、mysqladmin
flush-hosts
コマンドを実行します。
TCP/IP
接続すべてを認めない場合は、--skip-networking
オプションを指定して mysqld
を開始します。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.