web-dev-qa-db-ja.com

MySQLテーブルが最後に分析された時刻を知るにはどうすればよいですか?

私は主にInnoDBに興味がありますが、MyISAMにも興味があります。

私はinformation_schemaを見回しましたが、このデータはどこにも見当たりませんでした。

MySQL 5.5.16を使用しています。

3
Ike Walker

そのことを伝える直接の制御データはありませんが、設定できるメカニズムがいくつかあります。

メカニズム#1

バイナリログを有効にしている場合は、 mysqlbinlog からの出力を使用して、すべてのバイナリログに対してrep -i "analyze table"を実行します。

メカニズム#2

一般的なログを有効にしている場合は、一般的なログファイルに対してgrep -i "analyze table"を実行し、コマンドのタイムスタンプを見つけます。

メカニズム#3

高書き込み、高更新、高削除のボリュームを持つすべてのテーブルに対してANALYZE TABLEを実行するcronジョブをスケジュールする必要があります。そうすれば、推測作業はありません。

メカニズム#4

innodb_stats_on_metadata を設定して、InnoDBテーブルがANALYZE TABLEを必要とする時期を予測できるようにします。 (私のMar 26, 2012投稿を参照してください: InnoDBテーブルインデックス統計はいつ更新されますか?

警告

過去に、InnoDBに対してANALYZE TABLEテーブルを実行しても役に立たないと頻繁に述べてきました。

うまくいけば、MECHANISM #4がおそらく必要です。

2
RolandoMySQLDBA