2

次のクエリはすぐに実行されるはずですが、非常に時間がかかります。

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 にマウントしようとしましたが、それも役に立ちませんでした。

テーブルをフラッシュすると、問題は一時的に解消されますが、しばらくすると再び問題が発生することがわかりました。

どんな助けでも大歓迎です。

4

2 に答える 2

1

解決済み - mysql キャッシュ サイズが大きすぎることが判明しました。サイズを下げると問題が解決しました。

于 2012-04-10T01:52:41.440 に答える
0

これが MyISAM テーブルである場合は、修復することをお勧めします。破損したデータファイルでこの現象が発生しました。

于 2012-04-07T19:04:20.040 に答える