http://www.mysql.ru/docs/man/DNS.html
Когда к mysqld
подключается новый клиент, mysqld
выделяет новый поток для обработки данного запроса. Этот поток вначале проверяет, имеется ли в кэше имен хостов имя требуемого хоста. Если нет, то поток вызовет функции gethostbyaddr_r()
и gethostbyname_r()
, чтобы определить имя хоста.
Если операционная система не обеспечивает вышеописанные вызовы с поддержкой потоков, то данный поток заблокирует флаг и вызовет вместо этого функции gethostbyaddr()
и gethostbyname()
. Следует учитывать, что в таком случае никакой другой поток не сможет определять имена других хостов, отсутствующих в кэше имен хостов, пока первый поток не будет готов.
Можно заблокировать поиск DNS хоста, запустив mysqld
с параметром --skip-name-resolve
. В этом случае, однако, в таблицах привилегий MySQL можно использовать только IP-адреса.
Если процесс установления DNS очень медленный и хостов очень много, то можно получить более высокую производительность либо путем блокировки поиска DNS при помощи --skip-name-resolve
, либо увеличив размер определения HOST_CACHE_SIZE
(по умолчанию: 128) и перекомпилировав mysqld
.
Заблокировать кэш имен хостов можно с помощью --skip-host-cache
. Можно также очистить этот кэш с помощью команды FLUSH HOSTS
или mysqladmin flush-hosts
.
Можно запретить соединения по протоколу TCP/IP, запустив mysqld
с опцией --skip-networking
.