zl程序教程

您现在的位置是:首页 >  其它

当前栏目

MySQLDNS的使用过程详细分析

使用 过程 详细分析
2023-06-13 09:14:41 时间
当mysql客户端连接mysql服务器(进程为:mysqld),mysqld会创建一个新的线程来处理该请求。该线程先检查是否主机名在主机名缓存中。如果不在,线程试图解析主机名。
如果系统是线程安全的,则gethostbyaddr_r()和gethostbyname_r()被调用,来执行主机名解析;
如果系统不支持线程安全调用,则线程会锁定一个互斥体并调用gethostbyaddr()和gethostbyname()。在这种情况下,在第1个线程解锁互斥体前,没有其它线程可以解析不在主机名缓存中的主机名。
通过--skip-name-resolve选项启动mysqld来禁用DNS主机名查找。此时,只可以使用MySQL授权表中的IP地址,不能使用主机名。
如果DNS解析很慢且包括许多主机,通过用--skip-name-resolve禁用DNS查找或增加HOST_CACHE_SIZE定义(默认值:128)并重新编译mysqld来提高性能;
通过--skip-host-cache选项启动服务器来禁用主机名缓存。要想清除主机名缓存,执行FLUSHHOSTS语句或执行mysqladminflush-hosts命令。
如果要完全禁止TCP/IP连接,用--skip-networking选项启动mysqld。