top
Loading...
7.5.6.MySQL如何使用DNS
7.5.6. MySQL如何使用DNS

當新的客戶連接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選項啟動服務器來禁用主機名緩存。要想清除主機名緩存,執行FLUSH HOSTS語句或執行mysqladmin flush-hosts命令。

如果你想要完全禁止TCP/IP連接,用--skip-networking選項啟動mysqld

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/optimization.html
北斗有巢氏 有巢氏北斗