2 limitlessx limitlessx 于 2015.06.25 20:59 提问

求助: 用主键 UPDATE 很慢 200C

最近遇到了个问题, 我实在是找不到原因了, 求求各位帮帮忙, 谢谢各位啦!

最近在mysql的慢查询日志里发现了大量类似这样的记录

# Time: 150625 19:02:36
# User@Host: admin[admin] @  [10.8.10.6]
# Query_time: 4.962537  Lock_time: 0.000050 Rows_sent: 0  Rows_examined: 1
SET timestamp=1435230156;
UPDATE `player` SET `last_login_time`=1435230010, `last_login_ip`='110.159.152.214', `last_login_line`=1, `online_flag`=1 WHERE id=124;
  1. id 是主键, InnoDB , 表长度是4000行
  2. Lock_time, Rows_sent , Rows_examined都不高, 但Query_time很高, 有一些都超过了10秒,
  3. 相反一些没有加索引, 需要遍历整张表的查询Query_time才0.03秒
  4. 连接使用是长链接, 连接总数为10-20
  5. 流量: 接收约 10M/小时 , 发送约90M/小时
  6. mysql的平均请求次数为 每秒: 17次
  7. mysql版本5.1.17, 5.5.44 都试过结果一样
  8. 服务器配置为8核16G, CentOS 6.5 . cpu,内存,io 使用率都不高 , 均在10%以下
  9. 经常同一时间出现多条慢查询

附件:
http://pan.baidu.com/s/1hq3tQDY
这个里是当前mysql的运行状态,配置参数和部分慢查询日志

求各位帮个忙, 最近被搞的焦头烂额的.先谢谢各位啦!

3个回答

oyljerry
oyljerry   Ds   Rxr 2015.06.25 21:17

是不是慢的时候还要其它慢查询,导致阻塞。用mysql profile分析一下。

limitlessx
limitlessx 是线上环境, 开profile不是很方便啊.... 单独执行一条查询都很快
2 年多之前 回复
n29882942
n29882942   2015.06.26 07:18

更新前有没有锁表的情况?

limitlessx
limitlessx 如何看有没有锁表呢?
2 年多之前 回复
limitlessx
limitlessx   2015.06.26 10:24

Lock_time: 0.000050 这个是锁表时间还是等待锁表时间? 网上两种说法都有,不知道该信哪个!

另外下面三个状态
Innodb row lock time avg 4.9 k 等待获得行锁的平均时间 (单位:毫秒)。
Innodb row lock time max 13.8 k 等待获得行锁的最大时间 (单位:毫秒)。
Innodb row lock waits 3 等待行锁的次数。

等待行锁次数只有3次, 但平均时间很长, 但慢查询的次数远大于3次

如果是锁表该怎么查呢?

Csdn user default icon
上传中...
上传图片
插入图片