web-dev-qa-db-ja.com

MySQL innoDBでインデックスを再構築して統計を更新するにはどうすればよいですか?

統計の更新 および インデックスの再構築 が可能かつ有用なMS SQLサーバーの経験があります。 MySQL innoDBにそのようなオプションが見つかりません。そのようなオプションはありますか?そうでない場合、MySQLデータベースはどのように実行計画を作成しますか? MySQLはすべてのUPDATEおよびINSERTでインデックスと統計を更新しますか?

38
Tomas Kubes

これは

ANALYZE TABLE table_name;

詳細については、こちらをご覧ください こちら

ANALYZE TABLEは、テーブルのキー分布を分析して保存します。分析中、テーブルはMyISAM、BDB、およびInnoDBの読み取りロックでロックされます。このステートメントは、MyISAM、BDB、InnoDB、およびNDBテーブルで機能します。

47
fancyPants

どうして?統計を更新する必要はほとんどありません。インデックスの再構築が必要になることはさらにまれです。

OPTIMIZE TABLE tbl;はインデックスを再構築し、ANALYZEを実行します。時間がかかる。

ANALYZE TABLE tbl;は、InnoDBが統計を再構築するのに高速です。 5.6.6では、さらに必要性が少なくなりました。

22
Rick James

提供されたCLIツールmysqlcheckを使用して、最適化を実行することもできます。 スイッチのトン がありますが、最も基本的なのはデータベース、ユーザー名、パスワードを渡すだけです。

これをcronまたはWindowsスケジューラに追加すると、これを 自動化プロセス にできます。 (MariaDBですが、基本的に同じことです。)

6
bbrown