Mysql教程之Windows 7/8下連接本地MySQL慢的問題解析
綠色資源網(wǎng)小編:最近本地調(diào)試網(wǎng)站的時候個別程序如phpcms一直出現(xiàn)這個問題,速度異常慢,偶爾發(fā)現(xiàn)下面的文章,才提醒了我,原來問題這樣的。。。
最近在windows上開發(fā)應(yīng)用的時候發(fā)現(xiàn)一個有趣的問題:我的本地程序連接本地mysql庫居然要延遲1秒鐘左右才能打開。
問題分析
考慮到可能是程序性能問題后,我使用了xdebug的性能日志功能輸出程序運(yùn)行日志后發(fā)現(xiàn)連接mysql的函數(shù)時間居然用掉了接近95%的執(zhí)行時間。
確認(rèn)是mysql性能問題后,考慮是mysql的域名反查功能影響了速度,令我失望的是,在my.ini里面關(guān)閉域名反查后問題依舊存在。
百思不得其解時我突發(fā)奇想將代碼中的服務(wù)器的地址從localhost修改為了127.0.0.1,那個神奇的1秒鐘延遲居然消失了。
換成ip后居然就好了,難道是localhost存在啥蹊蹺?打開cmd,輸入ping localhost,ping輸出的結(jié)果讓我十分驚訝:
沒錯,localhost 出來的是 ipv6 地址 ::1,那么這一秒延遲的原因也很容易理解了,使用localhost連接,程序解析出來的地址是ipv6地址::1,然后去嘗試連接監(jiān)聽這個地址的mysql, 而顯然的是mysql監(jiān)聽的是ipv4地址127.0.0.1, ipv6連不上超時后會再去連接ipv4地址127.0.0.1, 這就是這個1秒鐘延遲出現(xiàn)的原因。
打開windows的hosts文件,你會看到下面的注釋
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
解決方法
方案1. 使用127.0.0.1而不是localhost去連接mysql。
方案2. 編輯hosts文件強(qiáng)制將127.0.0.1綁定在localhost。
關(guān)鍵詞:Mysql
閱讀本文后您有什么感想? 已有 人給出評價!
- 1
- 1
- 1
- 1
- 1
- 1