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