When a new client connects to mysqld, mysqld spawns a new thread to handle the request. This thread first checks whether the host name is in the host name cache. If not, the thread attempts to resolve the host name:
The thread takes the IP address and resolves it to a host
gethostbyaddr()). It then
takes that host name and resolves it back to the IP address
gethostbyname()) and compares to
ensure it is the original IP address.
If the operating system supports the thread-safe
gethostbyname_r() calls, the thread
uses them to perform host name resolution.
If the operating system does not support the thread-safe
calls, the thread locks a mutex and calls
gethostbyname() instead. In this case,
no other thread can resolve host names that are not in the
host name cache until the first thread unlocks the mutex.
If you have a very slow DNS and many hosts, you can get more
performance by either disabling DNS lookups with
--skip-name-resolve or by
(default value: 128) and recompiling mysqld.
You can disable the host name cache by starting the server with
--skip-host-cache option. To
clear the host name cache, issue a
statement or execute the mysqladmin