介紹
資料庫維護統計資訊的目的主要是為了優化器進行更好的執行優化,首先統計資訊是建立在索引的基礎上,如果表沒有索引那麼該表也就無統計資訊。
系統如何收集統計資訊
一、手動
1.執行Analyze table
innodb和mysiam儲存引擎都可以通過執行“Analyze table tablename”來收集表的統計資訊,除非執行計劃不準確,否則不要輕易執行該操作,如果是很大的表該操作會影響表的效能。
二、自動觸發
以下行為會自動觸發統計資訊的收集
1.第一次開啟表的時候
2.表修改的行超過1/6或者20億條時
3.當有新的記錄插入時
4.執行show index from tablename或者執行show table、查詢information_schema.tables\statistics 時
三、開啟引數innodb_stats_on_metadata
當開啟引數innodb_stats_on_metadata後訪問以下表也會觸發統計資訊的收集
在訪問以下表時,innodb表的統計資訊可自動收集
information_schema.TABLES
information_schema.STATISTICS
information_schema.PARTITIONS
information_schema.KEY_COLUMN_USAGE
information_schema.TABLE_CONSTRAINTS
information_schema.REFERENTIAL_CONSTRAINTS
information_schema.table_constraints
引數說明:
Innodb_stats_sample_pages:每次收集統計資訊時取樣的頁數,預設為20
innodb_stats_persistent:預設on,將analyze table產生的統計資訊儲存於磁碟,直至下次analyze table為止,此舉避免了統計資訊動態更新,保證了執行計劃的穩定,對於大表也節省了收集統計資訊的所需資源;
總結
備註: 作者:pursuer.chen 部落格:http://www.cnblogs.com/chenmh 本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須註明文章來源,且在文章開頭明顯處給明連結。 《歡迎交流討論》 |