天天看點

mysql5.7 sql監控_MySQL5.7中 performance和sys schema中的監控參數解釋

MySQL5.7中的mysql  performance和sys 監控參數

1、performance schema:介紹

在MySQL5.7中,performance schema有很大改進,包括引入大量新加入的監控項、降低占用空間和負載,以及通過新的sys schema機制顯著提升易用性。在監控方面,performance schema有如下功能:

①:中繼資料鎖:

對于了解會話之間中繼資料鎖的依賴關系至關重要。從MySQL5.7.3開始,就可以通過metadata_locks表來了解中繼資料鎖的相關資訊;

--哪些會話擁有哪些中繼資料鎖

--哪些會話正在等待中繼資料鎖

--哪些請求由于死鎖被殺掉,或者鎖等待逾時而被放棄

②:進度跟蹤:

跟蹤長時間操作的進度(比如alter table),從MySQL5.7.7開始,performance schema自動提供了語句進度資訊。我們可以通過events_stages_current表來檢視目前事件的進度資訊;

③:事務:

監控服務層和存儲引擎層事務的全部方面。從MySQL5.7.3開始,新增了 events_transactions_current表,可以通過setup_consumers、setup_instruments表打開事務監控,通過該表查詢到目前事務的狀态。如果線上資料庫遇到undo log大量增長、資料庫性能急劇下降的情況,可以通過該表查詢目前是否存在處于未送出狀态的事務。如果發現的确有大量事務的state處于active,這時可以确定資料庫有大量的事務未送出;

④:記憶體使用:

提供記憶體使用資訊統計,有利于了解和調整伺服器的記憶體消耗。從MySQL5.7.2開始,performance schema新增記憶體有關的統計資訊,分别從賬戶、通路主機、線程、使用者及事件的角度統計了記憶體的使用過程;

⑤:存儲程式:

存儲過程、存儲方法、事件排程器和表觸發器的檢測器。在MySQL5.7中的setup_objects表中,新增了event、function、procedure、trigger的檢測器。performance schema用于檢測該表中比對object_schema和object_name的對象;

2、sys schema介紹:

在MySQL5.7中新增的sys schema。是由一系列對象(視圖、存儲過程、存儲方法、表和觸發器)組成的schema,它本身不采集和存儲什麼資訊,而是将performance_schema 和 information_schema中的資料以更容易了解的方式總結出來歸納為“視圖”。

---sys schema可用于典型的調優和診斷用例,這些對象包括如下三個:

①:将性能模式資料彙總到更容易了解的視圖;

②:諸如性能模式配置和生成診斷報告等操作的存儲過程

③:用于查詢性能模式配置并提供格式化服務的存儲函數

---sys schema在查詢中的功能,可以檢視資料庫服務資源的使用情況?哪些主機對資料庫伺服器的通路量最大?執行個體上的記憶體使用情況?

3、sys schema裡面的表的分類:

①:主機相關資訊:

以host_summary開頭的視圖,主要彙總了IO延遲的資訊,從主機、檔案事件類型、語句類型等角度展示檔案IO的資訊;

②:innodb相關資訊:

以innodb開頭的視圖,彙總了innodb buffer page資訊和事務等待innodb鎖資訊;

③:IO使用情況:

以IO開頭的視圖,總結了IO使用者的資訊,包括等待IO的情況、IO使用量情況,從各個角度分組展示;

④:記憶體使用情況:

以memory開頭的視圖,從主機、線程、使用者、事件角度展示記憶體使用情況;

⑤:連接配接與會話資訊:

其中,processlist 和 session相關的視圖,總結了會話相關的資訊;

⑥:表相關資訊:

以schema_table開頭的視圖,從全表掃描、innodb緩沖池等方面展示了表統計資訊;

⑦:索引資訊:

其中包含index的視圖,統計了索引使用的情況,以及重複索引和未使用的索引情況;

⑧:語句相關資訊:

以statement開頭的視圖,統計的規範化後的語句使用情況,包括錯誤數、警告數、執行全表掃描的、使用臨時表、執行排序等資訊;

⑨:使用者相關資訊:

以user開頭的視圖,統計了使用者使用的檔案IO,執行的語句統計資訊等;

⑨:等待事件相關資訊:

以wait開頭的視圖,從主機和事件角度展示等待類事件的延遲情況;

4、sys  schema使用列子:

---檢視表的通路量:(可以監控每張表通路量的情況,或者監控某個庫的通路量的變化)

select table_schema,table_name,sum(io_read_requests+io_write_requests) from schema_table_statistics;

select table_schema,table_name,io_read_requests+io_write_requests as io_total from schema_table_statistics;

---備援索引和未使用索引的檢查:(schema_redundant_indexes和schema_unused_indexes檢視索引的情況)

select * from sys.schema_redundant_indexes\G

select * from sys.schema_unused_indexes;

(如果有備援索引和長期未使用的索引,應該及時清理,)

---檢視表自增ID使用情況:

select * from schema_auto_increment_columns\G

(可以使用schema_auto_increment_columns視圖,就能很簡單的查到每個表的自增量使用情況,甚至可以精确到某個表的自增量情況)

---監控全表掃描的sql語句:

select * from sys.statements_with_full_table_scans where db='test2'\G

(使用statements_with_full_table_scans視圖可以檢視哪些表查詢使用了全表掃描,其中exec_count是執行的次數,等資訊)

---檢視執行個體消耗的磁盤I/O情況:()

select file,avg_read+avg_write as avg_io from io_global_by_file_by_bytes order by avg_io desc limit 10;

(檢視io_global_by_file_by_bytes視圖可以檢查磁盤I/O消耗過大的原因,定位問題)