56,618
社区成员




我遇到的这个问题并不是简单地第一次查询慢,后续查询很快的缓存问题!
1. 我并未开启查询缓存
SHOW VARIABLES LIKE '%query_cache%';
show variables like 'innodb_buffer_pool%';
2. 我执行的是单表的查询,只不过数据量大加上where条件里使用的是rlike,导致查询有一点慢,大约17秒
3. 当执行完第一次查询后,后续再执行该查询语句将会变得很快,大约1秒左右
4. 此时重启mysql服务,重启应用服务都无法复现查询慢的问题,执行该sql查询时,依然很快,大约1秒左右
5. 当超过5个小时(这个时间并没有具体测试出小于5个小时的极限值是多少)没执行该sql查询时,再次执行该sql查询又变得很慢,大约17秒左右
6. 当重启mysql所在的虚拟机后,复现了第一次查询慢的现象
综上现象猜测,是操作系统级别记录了mysql的一些的东西,并且该记录存在超时失效或操作系统重启后失效的机制(类似于临时文件?),但具体是怎么回事现在还是没有头绪,有人遇到类似问题请麻烦解答下,谢谢
你可以查一下你的buffer_pool_size大小, 隔5小时后,应该是被其它数据挤出了buffer_pool
第一次查询慢不一定是因为没有缓存的原因,更大的可能性是因为第一次查询需要建立服务与数据库的连接,建立连接由于需要建立网咯连接,进行用户鉴权等操作,如果没有一个连接池是可能会很慢