1. ホーム
  2. mysql

[解決済み] Table does not support optimize, doing recreate + analyze instead "とはどういう意味ですか?

2022-08-02 16:09:13

質問

私は MySQL 5.5 で作業しており、インデックスの再構築を行うために OPTIMIZE TABLE クエリを使用してインデックスの再構築を行おうとしています。以下のようなエラーが発生しました。

テーブルはoptimizeをサポートしていません。

これは何を意味するのでしょうか?MySQL エンジンがインデックスの再構築を許可していないのでしょうか?このメッセージの背後で、MySQL 5.5 エンジン レベルで何が行われているのでしょうか?

どのように解決するのですか?

これは本当に情報提供のメッセージです。

おそらく、OPTIMIZE を行うのは InnoDB テーブル (InnoDB ストレージ エンジンを使用するテーブル、むしろ MyISAM ストレージエンジンを使用したテーブル)。

InnoDBはMyISAMのようにOPTIMIZEをサポートしません。それは何か違うことをします。空のテーブルを作成し、既存のテーブルからすべての行をそこにコピーし、本質的に古いテーブルを削除し、新しいテーブルの名前を変更します。これは、InnoDBがOPTIMIZEを実行するのに一番近い方法です。

あなたが受け取っているメッセージは、基本的にMySQLサーバーが、InnoDBストレージエンジンがMySQLサーバーに伝えたことを繰り返しているものです。

テーブルが最適化をサポートしていません。 は InnoDB ストレージ・エンジンが言っていることです...

"私(InnoDBストレージエンジン)は、私の友人(MyISAMストレージエンジン)が行うようなOPTIMIZE操作を行いません"。

"代わりにrecreate + analyzeをしています"。 は、InnoDBストレージ・エンジンが言っていることです...

"を実行することにしました。 異なる を実行することにしました。