MySQL 9.3 Reference Manual Including MySQL NDB Cluster 9.3
This section describes how to configure persistent and
non-persistent optimizer statistics for InnoDB
tables.
Persistent optimizer statistics are persisted across server restarts, allowing for greater plan stability and more consistent query performance. Persistent optimizer statistics also provide control and flexibility with these additional benefits:
You can use the
innodb_stats_auto_recalc
configuration option to control whether statistics are updated
automatically after substantial changes to a table.
You can use the STATS_PERSISTENT
,
STATS_AUTO_RECALC
, and
STATS_SAMPLE_PAGES
clauses with
CREATE TABLE
and
ALTER TABLE
statements to
configure optimizer statistics for individual tables.
You can query optimizer statistics data in the
mysql.innodb_table_stats
and
mysql.innodb_index_stats
tables.
You can view the last_update
column of the
mysql.innodb_table_stats
and
mysql.innodb_index_stats
tables to see when
statistics were last updated.
You can manually modify the
mysql.innodb_table_stats
and
mysql.innodb_index_stats
tables to force a
specific query optimization plan or to test alternative plans
without modifying the database.
The persistent optimizer statistics feature is enabled by default
(innodb_stats_persistent=ON
).
Non-persistent optimizer statistics are cleared on each server restart and after some other operations, and recomputed on the next table access. As a result, different estimates could be produced when recomputing statistics, leading to different choices in execution plans and variations in query performance.
This section also provides information about estimating
ANALYZE TABLE
complexity, which may
be useful when attempting to achieve a balance between accurate
statistics and ANALYZE TABLE
execution time.