找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

广告位招租qq41463402
查看: 208|回复: 0

[教程] Mysql教程之Windows 7/8下连接本地MySQL慢的问题解析

[复制链接]

1万

主题

1278

回帖

4万

积分

会员

UID
11756
金钱
0 点
威望
0 点
贡献
17590 点
宣传
0 人
买家
0 元
卖家
0 元
注册时间
2017-4-17
最后登录
2024-10-26

资讯达人勋章富贵论坛帅哥勋章

发表于 2024-4-11 17:48 | 显示全部楼层 |阅读模式

富贵论坛小编:最近本地调试网站的时候个别程序如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.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。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|富贵论坛 ( 琼ICP备2022019866号-1 )

GMT+8, 2024-10-31 01:19 , Processed in 0.115201 second(s), 37 queries .

Powered by FGBA.NET

© 2001-2024 FUGUI FGLTNET

快速回复 返回顶部 返回列表