本節說明如何為 InnoDB
資料表配置持續性和非持續性最佳化器統計資訊。
持續性最佳化器統計資訊會在伺服器重新啟動時保留,從而實現更高的計畫穩定性和更一致的查詢效能。持續性最佳化器統計資訊也透過以下額外優點提供控制和彈性
您可以使用
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
執行時間之間取得平衡時可能會很有用。