MySQL 查询随机滞后
我有一个如下所示的查询:
SELECT id FROM user WHERE id='47'
使用分析数据时,将对此查询编制索引,并且此查询的读取始终很快,如下所示。
SET profiling = 1;
SHOW PROFILES;
查询始终在大约 0.0002 秒内执行。
但是,如果我从PHP端分析查询,如下所示:
$current = microtime(true);
$data = $conn->query($full_query);
$elapsed = microtime(true) - $current;
然后,偶尔,这些查询中的1个可能需要大约0.2秒。但是,在我的测试脚本中,我有代码来测试这一点,该代码使用SET分析 = 1来分析查询;即使 PHP 通过 PDO 的往返行程可能是 0.2 秒,查询时间仍然是 0.0002。
我知道或知道的不会导致问题的事情:
- 查询速度不慢。当我从相同的查询运行中查看相同的查询时,在PHP中分析并使用SET PROFILING进行分析时,查询总是很快,并且永远不会记录在慢速查询日志中,即使它显示从PHP端花费.2秒。
- 这与跳过名称解析无关 - 这是不一致的,我已经打开了跳过名称解析
- 这与查询缓存无关,行为存在于两者中
- 即使在从缓存中发出的查询上也会发生此行为。
- 该查询实际上并没有选择ID,但我使用此查询进行测试,以表明它不是磁盘访问问题,因为该字段肯定已编入索引。
- 此表只有 10-20 兆元,索引为 1 兆兆。机器显示的负载非常小,innodb没有使用其所有缓冲区。
- 这是针对一个表进行测试的,该表除了我的测试查询之外没有其他活动。
有没有人对要检查的其他内容有任何想法?在我看来,这是一个网络问题,但我需要能够看到它并找到问题来修复它,而且我没有足够的地方来检查下一步。有什么想法吗?