• 爱情文章
  • 亲情文章
  • 友情文章
  • 生活随笔
  • 校园文章
  • 经典文章
  • 人生哲理
  • 励志文章
  • 搞笑文章
  • 心情日记
  • 英语文章
  • 范文大全
  • 作文大全
  • 新闻阅读
  • 当前位置: 山茶花美文网 > 校园文章 > 正文

    [Mysql教程之Windows,7/8下连接本地MySQL慢怎么办]Windows无法连接

    时间:2020-05-29来源:山茶花美文网 本文已影响 山茶花美文网手机站

    最近本地调试网站的时候个别程序如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慢怎么办1

    没错,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。

    • [Mysql教程之Windows,7/8下连接本地MySQL慢怎么办]Windows无法连接 相关文章:
    • 爱情文章
    • 亲情文章
    • 友情文章
    • 随笔
    • 哲理
    • 励志
    • 范文大全