【发布时间】:2017-10-29 21:07:46
【问题描述】:
我在 MySQL 5.5.53 中有一个 InnoDB 表,其中进行了简单的更新,例如
UPDATE mytable SET acol = 'value' WHERE id = 42;
暂停几秒钟。 id 是表的主键。
如果我启用查询分析使用
SET profiling = 1;
然后运行查询并查看配置文件,我看到如下内容:
show profile;
+------------------------------+----------+
| Status | Duration |
+------------------------------+----------+
| starting | 0.000077 |
| checking permissions | 0.000008 |
| Opening tables | 0.000024 |
| System lock | 0.000008 |
| init | 0.000346 |
| Updating | 0.000108 |
| end | 0.000004 |
| Waiting for query cache lock | 0.000002 |
| end | 3.616845 |
| query end | 0.000016 |
| closing tables | 0.000015 |
| freeing items | 0.000023 |
| logging slow query | 0.000003 |
| logging slow query | 0.000048 |
| cleaning up | 0.000004 |
+------------------------------+----------+
也就是说,所有的时间都花在end上。
end这发生在最后,但在清理
ALTER TABLE、CREATE VIEW、DELETE、INSERT、SELECT或UPDATE语句之前。
这么简单的语句怎么会在这种状态下花费这么长时间?
【问题讨论】:
-
我很想知道这张表中有多少行。并且您在使用此表的应用程序中是否有更多更新/插入/删除或更多选择?
-
300000行左右,不知道读写比例。
标签: mysql query-cache