简单的MySql更新查询非常慢

时间:2012-04-07 18:49:18

标签: mysql sql sql-update

以下查询需要很长时间,但它应该立即执行:

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 autoincrement
  • 表只有大约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,以加快查询速度,但这也无济于事。

我发现,如果我冲到桌子上,问题就会暂时消失,但是一段时间后它会再次出现。

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

已解决 - 原来mysql缓存大小太大。降低它的大小可以解决问题。

答案 1 :(得分:0)

如果这是MyISAM表,您可能需要修复它。我有这种破坏数据文件的现象。