这个问题困扰我好长时间.
今天才能解决.
现象 :
连接数据库离奇的慢, 不过一旦连接之后, 操作数据库是非常快的.
每次连接速度都不一样, 时慢时快.
解决方法:
在mysql的配置文件my.ini文件 [mysqlld]加上skip-name-resolve.
或者给linux的hosts文件加上客户端ip 域名信息, 域名信息随便写.也可以解决, 但这个不是最终解决方法, 一旦客户端ip有变更,或者其他客户端连接, 连接还是会很慢的.
这是因为mysql的权限是用户名@域名信息来管理导致的.
我的数据库服务器和WAS服务器在同一个网段的其他服务器上.
每次连接数据库的时候, MYSQL会根据请求的IP地址到hosts文件找该ip地址的域名信息.
然后再上DNS服务器反响解析该IP地址的域名信息.
再拿这个域名信息到权限表做判断有没有权限.
当从DNS服务器反响解析TimeOut之后(因为局域网IP地址是在DNS上是找不到的... 所以是一直等待状态, 最终timeout). 才被继续往下执行.
所以导致连接慢, 但是一旦连接起来操作数据库很快.
用skip-name-resole参数是取消反向解析的步骤.
这样会导致权限管理这一块不能用域名信息来管理了. 比如 user@www.baidu.com. 只能用ip来取代了.
以上只是个人的理解.......仅供参考吧!!
可能还有其他原因导致连接速度变慢..