简单的 UPDATE 查询,有时查询时间较长

简单的 UPDATE 查询,有时查询时间较长

我运行一个专用的 MySQL 服务器(2 核,16GB RAM),每秒处理 100-200 个请求。在高峰流量期间,它变得很慢,我很难优化服务器。所以我现在正在寻找一些想法,因为我已经使用“TUNING PRIMER”对 Innodb 进行了大量微调

现在产生最多慢查询的查询如下(参见mysqldumpslow的结果):

Count: 433  Time=3.40s (1470s)  Lock=0.00s (0s)  Rows=0.0 (0),
  UPDATE user_sessions SET tid='S' WHERE idsession='S'

我很惊讶,对于这样一个没有锁定的简单查询,竟然有这么多长查询。供您参考,该表是 InnoDB,有 14000 行。它包含网站上所有活动会话,每秒大约有 10 次 UPDATE 和 SELECT 命中。以下是其结构:

CREATE TABLE `user_sessions` (
 `personid` mediumint(9) NOT NULL DEFAULT '0',
 `ip` varchar(18) COLLATE utf8_unicode_ci NOT NULL,
 `idsession` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
 `datum` date NOT NULL DEFAULT '0000-00-00',
 `tid` time NOT NULL DEFAULT '00:00:00',
 `status` tinyint(4) NOT NULL DEFAULT '0',
 KEY `personid` (`personid`),
 KEY `idsession` (`idsession`),
 KEY `datum` (`datum`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

有任何想法吗?

编辑

这是我在此查询上激活分析时获得的结果:

Status               Duration
starting             0.000049
checking permissions 0.000009
Opening tables       0.000028
System lock          0.000010
init                 0.000079
Updating             0.030386
end                  0.000007
Waiting for query cache lock 0.000005
end                  0.002654
query end            0.000035
closing tables       0.000012
freeing items        0.000022
logging slow query   0.000005
cleaning up          0.000005

相关内容