MySQL 統計信息


介紹

數據庫維護統計信息的目的主要是為了優化器進行更好的執行優化,首先統計信息是建立在索引的基礎上,如果表沒有索引那么該表也就無統計信息。

 

 

系統如何收集統計信息  

一、手動  

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

本站點所有隨筆都是原創,歡迎大家轉載;但轉載時必須注明文章來源,且在文章開頭明顯處給明鏈接。

《歡迎交流討論》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM