简单的UPDATE查询(有时)长的查询时间

我运行一个专用的MySQL服务器(2核心,16GB RAM),每秒处理100-200个请求。 在高峰时段stream量越来越低,我很难优化服务器。 所以我现在正在寻找一些想法,我已经做了很多Innodb微调“TUNING PRIMER”

现在生成最慢查询的查询如下(查看mysqldumpslow的结果):

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

对于这样一个没有locking的简单查询有这么多的长查询,我感到非常惊讶。 Fyi,表是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