小编Ale*_*lex的帖子

每 5 分钟卡在“查询结束”状态

我厌倦了在慢查询日志中看到数据,所以我决定看看这到底是怎么回事。

UPDATE每秒运行多达数十次的查询有时真的很慢。这是查询:

UPDATE `user` SET
    `last_active` = NOW(), 
    `last_ip` = '<ip>' 
WHERE `name` = '<name>' 
LIMIT 1
Run Code Online (Sandbox Code Playgroud)

桌子:

CREATE TABLE IF NOT EXISTS `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(16) NOT NULL,
  `last_ip` varchar(50) NOT NULL DEFAULT 'none',
  `last_active` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`),
  KEY `last_active` (`last_active`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=34003;
Run Code Online (Sandbox Code Playgroud)

通常查询需要大约 0.2 毫秒,但每 5 分钟(准确地说是每 5 分钟,10:00:12、10:05:12、10:10:12...)需要超过 250 毫秒,所有时间都花在状态“查询结束”。

知道是什么原因造成的吗?为什么一个查询每 5 分钟就会运行缓慢?每 5 分钟发生什么会影响“查询结束”?没有其他进程正在运行。

MySQL 版本 5.5.44

mysql profiler mysql-5.5

5
推荐指数
1
解决办法
4683
查看次数

标签 统计

mysql ×1

mysql-5.5 ×1

profiler ×1