本節說明如何設定 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
執行時間之間取得平衡時可能很有用。