1

innodb テーブルの最終更新日を確認するにはどうすればよいですか? この質問によると、何年もの間修正されていないバグがあるようです。大きなテーブルを扱っており、チェックサムの計算に時間がかかりすぎるため、チェックサムを使用できません。また、何百ものテーブルのトリガーを書きたくないだけなので、トリガーも適切なソリューションのようには見えません。これを達成できる他の方法はありますか?

単一の行ではなく、テーブル全体 (削除、挿入、更新) の最終更新日が必要です。

編集:既存のクエリを変更したりトリガーを作成したりせずにこれを判断する方法は受け入れられないと思うので、テーブルが変更されたかどうかを確認するだけで十分です。前述したように、これは を使用して可能ですCHECKSUM TABLE...が、大きな innodb テーブルでは非常に遅くなります。これを達成するためのより良いアルゴリズムはありますか?

4

1 に答える 1

0

ステートメントを実行して現在の時刻を更新するラッパー プロシージャを作成してみてください。

これはあなたのコメントに答えます:

「これにより、何百ものテーブルのトリガーを作成できなくなります。」

なんらかのエラーが発生したため、スタック オーバーフローにより、そのような手順のサンプル コードを公開できませんでした。

問題なくコマンドを「実行」できます。今テストしたところ、動作します。プロシージャを「call my_procedure('insert/update/delete ...')」として実行する必要があります。

 PREPARE s1 FROM @sql;
 EXECUTE s1;
 DEALLOCATE PREPARE s1;

このようなプロシージャを作成する方法に関するリンクは次のとおりですhttp://www.java2s.com/Code/SQL/Procedure-Function/EXECUTEdynamicSQLcommand.htm

パラメータを使用して連結を空の文字列に変更するだけです。

于 2012-08-01T14:05:15.147 に答える