innodb_stats_persistent
, innodb_stats_auto_recalc
, and innodb_stats_persistent_sample_pages
are global variables. To override these system-wide settings and configure optimizer statistics parameters for individual tables, you can define STATS_PERSISTENT
, STATS_AUTO_RECALC
, and STATS_SAMPLE_PAGES
clauses in CREATE TABLE
or ALTER TABLE
statements.
STATS_PERSISTENT
specifies whether to enable persistent statistics for an InnoDB
table. The value DEFAULT
causes the persistent statistics setting for the table to be determined by the innodb_stats_persistent
setting. A value of 1
enables persistent statistics for the table, while a value of 0
disables the feature. After enabling persistent statistics for an individual table, use ANALYZE TABLE
to calculate statistics after table data is loaded.
STATS_AUTO_RECALC
specifies whether to automatically recalculate persistent statistics. The value DEFAULT
causes the persistent statistics setting for the table to be determined by the innodb_stats_auto_recalc
setting. A value of 1
causes statistics to be recalculated when 10% of table data has changed. A value 0
prevents automatic recalculation for the table. When using a value of 0, use ANALYZE TABLE
to recalculate statistics after making substantial changes to the table.
STATS_SAMPLE_PAGES
specifies the number of index pages to sample when cardinality and other statistics are calculated for an indexed column, by an ANALYZE TABLE
operation, for example.
All three clauses are specified in the following CREATE TABLE
example:
CREATE TABLE `t1` ( `id` int(8) NOT NULL auto_increment, `data` varchar(255), `date` datetime, PRIMARY KEY (`id`), INDEX `DATE_IX` (`date`) ) ENGINE=InnoDB, STATS_PERSISTENT=1, STATS_AUTO_RECALC=1, STATS_SAMPLE_PAGES=25;