在流行的云服务虚拟服务器上使用LEMP,带有MyISAM表.
问题是,有时每隔几个小时就执行一次简单的mysql查询(从哪里选择),执行几秒钟(5-9秒),而不是毫秒(0.002),就像其他时间一样。
MySQL slow.log有以下记录:
..。Query_time: 5.369666 Lock_time: 0.000120。
error.log是空的,而在其他系统中,日志也没有什么特别之处。
这样缓慢的查询一个接一个地传递到多个数据库和表,因此它看起来不像slow.log中的表锁和表值。
我是在启用普通日志,但没什么奇怪的。只是常规的查询,所以我找不到任何相关。我也没有发现内存或cpu泄漏。看起来,有时候有些东西会给MySQL带来很大的负担,而且速度会减慢。
MySQL放缓高峰的原因是什么?怎么才能发现呢?
发布于 2019-10-05 17:04:24
"0.002“听起来像是查询缓存起作用了。
当QC完全打开时,在表(S)发生任何更改之前第二次运行相同的SELECT
,结果集将在哈希(称为查询缓存)中查找。这将花费1ms的顺序,不管查询通常需要多长时间。
或者..。
由于您使用的是MyISAM,几乎任何接触相同表的操作(S)都会“锁定”表,并导致正常快速查询在其他查询(或查询)采取的时间内暂停。切换到InnoDB可能会有所帮助。
如果您想进一步讨论它,请提供查询,SHOW CREATE TABLE
和EXPLAIN SELECT ...
,SHOW VARIABLES LIKE 'query%';
,SHOW GLOBAL STATUS LIKE 'Qc%';
中的信息可能会导致删除上述任何一种解释。
https://dba.stackexchange.com/questions/249340
复制相似问题