简单的MySQL更新查询速度很慢
问题描述:
以下查询花费很长的时间,但它应该立即执行:简单的MySQL更新查询速度很慢
mysql> UPDATE articles SET description='test' WHERE article_id=6;
Query OK, 1 row affected (40.80 sec)
Rows matched: 1 Changed: 1 Warnings: 0
- article_id的数据类型为int自动增量
- 表只拥有约1000个记录
我试着分析这个查询,你可以看到它执行更新很快但是因为某种原因挂起:
mysql> SHOW PROFILE FOR QUERY 1;
+----------------------+-----------+
| Status | Duration |
+----------------------+-----------+
| starting | 0.000079 |
| checking permissions | 0.000016 |
| Opening tables | 0.000020 |
| System lock | 0.000011 |
| Table lock | 0.000864 |
| init | 0.000078 |
| Updating | 0.000315 |
| end | 40.798736 |
| query end | 0.000028 |
| freeing items | 0.000014 |
| closing tables | 0.000012 |
| logging slow query | 0.000010 |
| logging slow query | 0.000046 |
| cleaning up | 0.000012 |
+----------------------+-----------+
14 rows in set (0.00 sec)
我试着将tmp目录挂载到RAM,以加快查询速度,但这也没有帮助。
我发现如果我刷新表格,问题就会暂时消失,但它会在一段时间后再次出现。
任何帮助表示赞赏。
答
如果这是一个MyISAM表,您可能需要修复它。我有这种现象与损坏的数据文件。
+0
是的,它是MyISAM。我多次尝试维修,优化和冲洗。只有FLUSH解决了这个问题,但即使是暂时的。第二天,问题又回来了。 我还应该提到,这是在一个主服务器和一个从服务器的集群上,不确定它是否与问题有任何关联。 – Striker 2012-04-07 20:20:28
是否有其他的东西在同一时间对数据库运行?您可能会遇到锁定问题,其中一些其他查询已锁定相关行。 – 2012-04-07 18:51:44