When a new thread connects to mysqld
, mysqld
will spawn a
new thread to handle the request. This thread will first check if the
hostname is in the hostname cache. If not the thread will call
gethostbyaddr_r()
and gethostbyname_r()
to resolve the
hostname.
If the operating system doesn't support the above thread-safe calls, the
thread will lock a mutex and call gethostbyaddr()
and
gethostbyname()
instead. Note that in this case no other thread
can resolve other hostnames that is not in the hostname cache until the
first thread is ready.
You can disable DNS host lookup by starting mysqld
with
--skip-name-resolve
. In this case you can however only use IP
names in the MySQL privilege tables.
If you have a very slow DNS and many hosts, you can get more performance by
either disabling DNS lookop with --skip-name-resolve
or by
increasing the HOST_CACHE_SIZE
define (default: 128) and recompile
mysqld
.
You can disable the hostname cache with --skip-host-cache
. You
can clear the hostname cache with FLUSH HOSTS
or mysqladmin
flush-hosts
.
If you don't want to allow connections over TCP/IP
, you can do this
by starting mysqld
with --skip-networking
.