Mysql教程之Windows 7/8下连接本地MySQL慢的问题解析
最近本地调试网站的时候个别程序如phpcms一直出现这个问题,速度异常慢,偶尔发现下面的文章,才提醒了我,原来问题这样的。。。
最近在windows上开发应用的时候发现一个有趣的问题:我的本地程序连接本地mysql库居然要延迟1秒钟左右才能打开。
问题分析
考虑到可能是程序性能问题后,我使用了xdebug的性能日志功能输出程序运行日志后发现连接mysql的函数时间居然用掉了接近95%的执行时间。
确认是mysql性能问题后,考虑是mysql的域名反查功能影响了速度,令我失望的是,在my.ini里面关闭域名反查后问题依旧存在。
百思不得其解时我突发奇想将代码中的服务器的地址从localhost修改为了127.0.0.1,那个神奇的1秒钟延迟居然消失了。
换成ip后居然就好了,难道是localhost存在啥蹊跷?打开cmd,输入ping localhost,ping输出的结果让我十分惊讶:
<img title="点击查看大图" style="margin: 10px auto 0px; border: 0px currentColor; border-image: none; line-height: 0; font-size: 0px; vertical-align: middle; display: block; cursor: pointer; max-width: 603px;" alt="mysql教程之Windows 7/8下连接本地MySQL慢的问题解析_绿色资源网" width="654" height="239" style="cursor: hand" src="/upload/tech/UploadPic/2014-8/201482520745499.png" />
没错,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。
一、推荐使用迅雷或快车等多线程下载软件下载本站资源。
二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。
三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!
四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.
五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。
六、如需转载本站资源,请注明转载来自并附带链接
七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com
- 1CSS控制文字在Div最底部显示
- 2Thinkphp5如何配置IP+端口访问项目模块
- 3elementUI el-dialog弹框居中
- 4教你如何搭建及优化站点
- 5国内互联网视频行业运营分析
- 6service mysql start出错,mysql不能启动,解决mysql: unrecognized service错误
- 7CSS实现悬浮顶部的Div工具栏
- 8记一次Thinkphp5.1框架mysql数据库崩溃(SQLSTATE [08004] Too many connections)
- 9连接SQL Server数据库提示:Login failed for user 'sa'错误的解决方案
- 10Thinkphp3.2在centos7上设置计划任务的方法