程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> Mysql教程之Windows 7/8下連接本地MySQL慢怎麼辦

Mysql教程之Windows 7/8下連接本地MySQL慢怎麼辦

編輯:關於MYSQL數據庫

       最近本地調試網站的時候個別程序如phpcms一直出現這個問題,速度異常慢,偶爾發現下面的文章,才提醒了我,原來問題這樣的。。。

      最近在windows上開發應用的時候發現一個有趣的問題:我的本地程序連接本地mysql庫居然要延遲1秒鐘左右才能打開。

      問題分析

      考慮到可能是程序性能問題後,我使用了xdebug的性能日志功能輸出程序運行日志後發現連接mysql的函數時間居然用掉了接近95%的執行時間。

      確認是mysql性能問題後,考慮是mysql的域名反查功能影響了速度,令我失望的是,在my.ini裡面關閉域名反查後問題依舊存在。

      百思不得其解時我突發奇想將代碼中的服務器的地址從localhost修改為了127.0.0.1,那個神奇的1秒鐘延遲居然消失了。

      換成ip後居然就好了,難道是localhost存在啥蹊跷?打開cmd,輸入ping localhost,ping輸出的結果讓我十分驚訝:

    Mysql教程之Windows 7/8下連接本地MySQL慢怎麼辦 三聯

      沒錯,localhost 出來的是 ipv6 地址 ::1,那麼這一秒延遲的原因也很容易理解了,使用localhost連接,程序解析出來的地址是ipv6地址::1,然後去嘗試連接監聽這個地址的mysql, 而顯然的是mysql監聽的是ipv4地址127.0.0.1, ipv6連不上超時後會再去連接ipv4地址127.0.0.1, 這就是這個1秒鐘延遲出現的原因。

      打開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文件強制將127.0.0.1綁定在localhost。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved