このセクションでは、InnoDB
テーブルの永続オプティマイザ統計および非永続オプティマイザ統計を構成する方法について説明します。
永続オプティマイザ統計はサーバーの再起動後も永続化されるため、plan stability の向上とクエリーのパフォーマンスの一貫性が向上します。 永続オプティマイザ統計には、次のような利点があり、制御と柔軟性もあります:
innodb_stats_auto_recalc
構成オプションを使用して、テーブルに対する大幅な変更後に統計を自動的に更新するかどうかを制御できます。STATS_PERSISTENT
、STATS_AUTO_RECALC
およびSTATS_SAMPLE_PAGES
句をCREATE TABLE
およびALTER TABLE
ステートメントとともに使用して、個々のテーブルのオプティマイザ統計を構成できます。mysql.innodb_table_stats
テーブルおよびmysql.innodb_index_stats
テーブルのオプティマイザ統計データをクエリーすることができます。mysql.innodb_table_stats
テーブルおよびmysql.innodb_index_stats
テーブルのlast_update
カラムを表示して、統計が最後に更新された日時を確認できます。mysql.innodb_table_stats
テーブルおよびmysql.innodb_index_stats
テーブルを手動で変更して、特定のクエリー最適化計画を強制したり、データベースを変更せずに代替計画をテストできます。
永続オプティマイザ統計機能は、デフォルトで有効になっています (innodb_stats_persistent=ON
)。
非永続オプティマイザ統計は、各サーバーの再起動時および他の操作後にクリアされ、次のテーブルアクセスで再計算されます。 その結果、統計の再計算時に異なる見積りが生成され、実行計画の選択肢やクエリーパフォーマンスの変動が生じる可能性があります。
このセクションでは、正確な統計と ANALYZE TABLE
実行時間のバランスを取る場合に役立つ可能性のある、ANALYZE TABLE
の複雑さの見積りについても説明します。