2

コンテキスト:テーブルがたくさんある大きなデータベースがあります。それらのほとんど(99%)はinnodbを使用しています。どのテーブルが変更されたかを監視する毎日のプロセスが必要です。彼らはinnodbを使用しているのでUpdate_time

SHOW table STATUS from information_schema;

無効である。そのため、各テーブル(できれば別のテーブル)のチェックサム(およびその他の事項)を格納する毎日の手順を作成する必要があります。その上で、さまざまなチェックを行います。

問題:使用しようとしています

checksum table from db_schema.table_name;

これは、「テーブル」、「チェックサム」の2つの列を持つ結果セットテーブルを返します。必要な値が得られますが、selectまたはinsertステートメントで使用できません。

私は次のような多くのことを試しました:

select `checksum` from (checksum table from db_schema.table_name);

または他の同様のクエリ。しかし、結果セットからデータを抽出することはできません。

それができる方法はありますか?よろしくお願いします。

編集:最終的に私が望むのは、さまざまな情報(テーブルスキーマ、テーブル名、カウント、チェックサム、datetime:now()...)を含むより複雑な結果セットを構築することです。次に、この結果セットを使用して比較します。昨日の値と私自身の統計を描きます。そのため、その結果セットからチェックサムを取得したいと思います。

4

1 に答える 1

1

SQLを使用してCHECKSUMTABLEの結果を直接保存することはできません。チェックサム結果を使用するために、ストアドプロシージャでプリペアドステートメントまたはカーソルを使用することもできません。

スクリプトを作成するか、人気のあるツールをダウンロードしてください。

CHECKSUM = 1テーブル引数を使用するMyISAMテーブルの場合、次のように単にINFORMATION_SCHEMAを使用できます。

SELECT TABLE_NAME,CHECKSUM FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'test' AND ENGINE='MyISAM' 
      AND CHECKSUM IS NOT NULL;
于 2012-06-28T04:56:15.767 に答える