MySQL索引統計資訊更新相關的引數

2021-07-30 21:54:38 字數 1320 閱讀 7665

mysql統計資訊相關的引數:

1. innodb_stats_on_metadata(是否自動更新統計資訊),mysql 5.7中預設為關閉狀態

僅在統計資訊配置為非持久化的時候生效。

也就是說在innodb_stats_persistent 配置為off的時候,非持久化儲存統計資訊的手,innodb_stats_on_metadata的設定才生效。

當innodb_stats_on_metadata設定為on的時候,

innodb在執show table status 或者訪問information_schema.tables 或者information_schema.statistics 系統表的時候,更新費持久化統計資訊(類似於analyze table)

某個索引的統計資訊更新時間參考mysql.innodb_index_stats這個系統表

select * from mysql.innodb_index_stats  where table_name = 'teststatistics';

2. innodb_stats_auto_recalc

是否自動觸發更新統計資訊,僅影響持久化儲存的統計資訊的表,閾值是變化的資料超過錶行數的10%。

也就是說,乙個表索引統計資訊是持久化儲存的,並且表中資料變化了超過10%,

如果innodb_stats_auto_recalc為on,就會自動更新統計資訊,否則不更

3. innodb_stats_persistent(非持久化統計資訊開關),mysql 5.7中預設為開啟,持久化儲存統計資訊

該選項設定為on時候,統計資訊會持久化儲存到磁碟中,而不是存在在記憶體中,

相反,如果是非持久化儲存的(存在記憶體中),相應的統計資訊會隨著伺服器的關閉而丟失。

4. innodb_stats_persistent_sample_pages (持久化更新統計資訊時候索引頁的取樣頁數)

預設是20個page,如果設定的過高,那麼在更新統計資訊的時候,會增加analyze table的執行時間。

5. innodb_stats_transient_sample_pages(臨時性更新統計資訊時候索引頁的取樣頁數)

預設值是8,innodb_stats_persistent設定為disable的情況下innodb_stats_transient_sample_pages才生效,

也就是非持久化儲存過索引統計資訊的時候,innodb_stats_transient_sample_pages為更新統計資訊的取樣頁數

6. innodb_stats_sample_pages

已棄用. 已用innodb_stats_transient_sample_pages 替代。

MySQL統計資訊相關表介紹

相信大家都了解mysql中的統計資訊,那麼統計資訊是存放在 呢?我們怎麼去檢視?這個表裡面的內容還是比較好理解。重要的列 通過這些資訊我們可以算出聚集索引的大小 這個表裡面輸出的內容相對會比較複雜一些。表結構和測試資料 我們主要關注的的列 1 主鍵索引與唯一索引 例如上面結果中index name ...

mysql統計資訊 概述MySQL統計資訊

mysql統計資訊的儲存分為兩種,非持久化和持久化統計資訊。一 非持久化統計資訊 非持久化統計資訊儲存在記憶體裡,如果資料庫重啟,統計資訊將丟失。有兩種方式可以設定為非持久化統計資訊 1 全域性變數,innodb stats persistent off 2 create alter表的引數,sta...

Oracle統計資訊的更新

手工更新的語句是 execute dbms stats.gather table stats user name,table name 使用手工更新的場景 1.oracle有個自動更新統計資訊的job,大約在每天晚上執行。所以在白天統計資訊不會被更新掉 2.統計資訊對cbo的影響有個閥值,尤其是對範...