Mysql - 当Linux服务器上的IO等待很高时查询很慢
Posted
技术标签:
【中文标题】Mysql - 当Linux服务器上的IO等待很高时查询很慢【英文标题】:Mysql - query is slow when IO on linux server wait is high 【发布时间】:2013-03-29 11:45:09 【问题描述】:IO 等待高时查询慢。
从 iotop 命令显示
-- TID -- PRIO -- 用户 -- 磁盘读取 -- 磁盘写入 -- SWAPIN -- IO> -- 命令
-- 2311 -- be/4 -- mysql -- 0.00 B/s -- 0.00 B/s -- 0.00% -- 96.25% -- mysql~l.sock
-- 2311 -- be/4 -- mysql -- 0.00 B/s -- 0.00 B/s -- 0.00% -- 96.25% -- mysql~l.sock
-- 2311 -- be/4 -- mysql -- 0.00 B/s -- 0.00 B/s -- 0.00% -- 96.24% -- mysql~l.sock
高 IO 等待从下午 6:13:28 到下午 6:13:29(sar 命令)开始
--------------------- CPU -- %usr -- %nice -- %sys -- %iowait -- %steal
-- 下午 6:13:28 --- 所有 ----- 2.53 --- 0.00 ---- 2.02 ----- 39.39 ------ 0.00
-- 下午 6:13:29 --- 所有 ----- 1.99 --- 0.00 ---- 1.00 ----- 49.25 ------ 0.00
这段时间的查询速度很慢
时间:130329 18:13:29
用户@主机:wdwdwd[wdwdwd]@本地主机[]
Query_time: 2.007902 Lock_time: 0.000025 Rows_sent: 0 Rows_examined: 1 SET timestamp=1364555609;
UPDATE log_product SET credit=credit+1 WHERE id_product='349721228' and id_user='2021841' LIMIT 1;
## 问题是如何修复这个过程。真正的原因是什么? ##
【问题讨论】:
我得到了类似的东西 - 高 iowait、非常低的 CPU 和缓慢的响应。我怀疑 InnoDB 有什么奇怪的地方。您使用的是哪个 MySQL 版本? 【参考方案1】:您在“Log_Product”表上是否有一个索引(id_user,id_product)作为单个索引,而不是两个索引,每列一个。此外,如果字段是数字,则不需要引号...
【讨论】:
我有 id_user 和 id_product 的索引,并且每个都有一个索引以上是关于Mysql - 当Linux服务器上的IO等待很高时查询很慢的主要内容,如果未能解决你的问题,请参考以下文章
Linux 查看磁盘 查看磁盘IO并找出占用 并找出占用IO读写很高的进程