最近、すべての整合性を強制するために、さまざまな mysql テーブルに多くのトリガーを追加しました。単純な更新に非常に時間がかかるため、エンジンを停止したのではないかと心配しています。
検討:
UPDATE `partner_stats` SET earnings=1 WHERE date=CURRENT_DATE()
0 rows affected. ( Query took 0.6523 sec )
SELECT * FROM `partner_stats` WHERE date = CURRENT_DATE()
1 total, Query took 0.0004 sec
SELECT
0.0004 かかりますが、単純な 0.65かかりUPDATE
ます!
この特定のテーブルには行が 1 つしかなく、それに関連付けられたトリガーはありません。エンジンを MyISAM に切り替えると問題は解決しますが、将来このテーブルにトリガーを追加する必要があるため、InnoDB を使い続けたいと考えています。
エンジンの何が問題なのですか? 他のテーブルでの作業が忙しすぎませんか? どのようなプロファイリングまたはデバッグ オプションがありますか?
編集:プロファイリングを行い、これを示しています:
mysql> show profile for QUERY 2;
+----------------------+----------+
| Status | Duration |
+----------------------+----------+
| starting | 0.000064 |
| checking permissions | 0.000008 |
| Opening tables | 0.000032 |
| System lock | 0.000007 |
| init | 0.000051 |
| Updating | 0.000069 |
| end | 0.011682 |
| query end | 0.218070 |
| closing tables | 0.000016 |
| freeing items | 0.000017 |
| logging slow query | 0.000003 |
| cleaning up | 0.000002 |
+----------------------+----------+
12 rows in set (0.00 sec)