相信大家都了解mysql中的統計資訊,那麼統計資訊是存放在**呢?我們怎麼去檢視?
這個表裡面的內容還是比較好理解。
重要的列:
通過這些資訊我們可以算出聚集索引的大小:
這個表裡面輸出的內容相對會比較複雜一些。
表結構和測試資料:
我們主要關注的的列:
1 主鍵索引與唯一索引 例如上面結果中通過這個表我們可以檢視索引選擇性如何,並且可以看到組合索引中每一列選擇性如何,還可以計算索引的大小:index_name = primary
時:1)
index_name = primary
且stat_name = n_diff_pfx01
則stat_value
代表主鍵索引中第一列distinct之後的數量,從上面的例子我們看到stat_value
是1,因為a這一列的值都是(1)2)
index_name = primary
且stat_name = n_diff_pfx02
則stat_value
代表主鍵索引中第一列和第二列distinct之後的數量,從上面的例子我們看到stat_value
是5,因為a,b兩列存在的值是(1,1)(1,2)(1,3)(1,4)(1,5)3)
stat_description
中我們可以看到是那幾個列的資訊4)
n_diff_pfxnn
以此類推2 非唯一索引不同的地方是在原有的列之後會新增上主鍵索引,這樣說可能比較難理解,針對上面查詢出來的記過下面詳細說明下:
1) 根據表結構定義我們知道i1是乙個非唯一索引,是由(c,d)兩個列組成的。我們根據上面的結果可以看到除了
n_diff_pfx01,n_diff_pfx02
又多出來了n_diff_pfx03,n_diff_pfx04
,通過stat_description
我們可以看到n_diff_pfx03,n_diff_pfx04
是在原有的(c,d)兩列上又多出了(c,d,a) (c,d,a,b)這裡就是將主鍵索引新增到了這裡。2) 例如
n_diff_pfx03
的stat_value
是2 代表的就是在原有的非唯一索引上新增了主鍵索引的第一列(a), 這個時候distinct之後的值是2 所存在的值就是: (10,11,1) (10,12,1)
資料庫中的一些系統表對dba是非常重要的,可以幫助我們排查問題、效能分析、去更好的了解一些機制。
innodb_table_stats
與innodb_index_stats
兩張表我們可以了解統計資訊、計算索引的大小、索引的選擇性如何,也可以做到監控中。
通過5.7的mysql中新增了sys schema也就是讓大家不用通過去檢視**的方式去排查各種問題、故障處理等,可見對系統表的學習在日後會更重要。
【參考資料】
mysql統計資訊 概述MySQL統計資訊
mysql統計資訊的儲存分為兩種,非持久化和持久化統計資訊。一 非持久化統計資訊 非持久化統計資訊儲存在記憶體裡,如果資料庫重啟,統計資訊將丟失。有兩種方式可以設定為非持久化統計資訊 1 全域性變數,innodb stats persistent off 2 create alter表的引數,sta...
MySQL索引統計資訊更新相關的引數
mysql統計資訊相關的引數 1.innodb stats on metadata 是否自動更新統計資訊 mysql 5.7中預設為關閉狀態 僅在統計資訊配置為非持久化的時候生效。也就是說在innodb stats persistent 配置為off的時候,非持久化儲存統計資訊的手,innodb s...
MySQL統計資訊簡介
mysql統計資訊的儲存分為兩種,非持久化和持久化統計資訊。一 非持久化統計資訊 非持久化統計資訊儲存在記憶體裡,如果資料庫重啟,統計資訊將丟失。有兩種方式可以設定為非持久化統計資訊 非持久化統計資訊在以下情況會被自動更新 非持久化統計資訊的缺點顯而易見,資料庫重啟後如果大量表開始更新統計資訊,會對...