mysql 5.7後使用sys資料庫下的表查詢資料庫效能狀況

不一樣的天空w發表於2019-07-18

淺談MySQL5.7 sys schema

學習使用MySQL 5.7的sys庫

https://blog.csdn.net/yanzongshuai/article/details/73441158


1. 誰使用了最多的資源? 基於ip或是使用者?

對於該問題可以從host, user, io三個方面去了解,大概誰的請求最多。對於使用資源問題可以直接從下面四個檢視裡有一個

大概的瞭解。

   select * from host_summary limit 1\G;

   select * from io_global_by_file_by_bytes limit 1\G;

   select * from user_summary limit 1\G;

   select * from memory_global_total\G;

注意:記憶體部分,不包括innodbbuffer pool。只是server 層申請的記憶體

2. 大部分連線來自哪裡及傳送的sql情況

檢視當前連線情況:

select host, current_connections,statements from host_summary;

檢視當前正在執行的sql:

select conn_id, user, current_statement, last_statement from session;

3. 機器執行最多的sql語句是什麼樣?

查詢系統裡執行最多的top 10 sql:

select * from statement_analysis order byexec_count desc limit 10\G;

4. 哪張表的io最多?哪張表訪問次數最多

select * from io_global_by_file_by_bytes limit 10;

哪張表訪問次數最多,可以參考上面先查詢執行最多的語句,然後查詢對應的表, sql如下:

select * from statement_analysis order by exec_count desc limit 10\G;

5. 哪些語句延遲比較嚴重

statement_analysis中avg_latency的最高的,sql語句:

select * from statement_analysis order by avg_latency desc limit 10\G;

6. 哪些sql語句使用了磁碟臨時表

利用statement_analysis 中tmp_tables ,tmp_disk_tables 進行計算,參考sql:

select db, query, tmp_tables,tmp_disk_tables  from statement_analysis where tmp_tables>0 or tmp_disk_tables >0 

order by(tmp_tables+tmp_disk_tables) desc limit 20;

7. 哪張表佔用了最多的buffer pool

查詢在buffer pool中佔用前10的表,sql如下:

select * from innodb_buffer_stats_by_tableorder by pages desc limit 10;

8. 每個庫佔用多少buffer pool

select * from innodb_buffer_stats_by_schema;

9. 每個連線分配多少記憶體

利用session表和memory_by_thread_by_current_bytes分配表進行關聯查詢, sql如下:

select b.user, current_count_used,current_allocated, current_avg_alloc, current_max_alloc,total_allocated,

current_statement from memory_by_thread_by_current_bytes a,session b where a.thread_id = b.thd_id;

10. mysql內部現在有多個執行緒在執行

mysql內部的執行緒型別及數量:

select user, count(*) from processlistgroup by user;


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31397003/viewspace-2650970/,如需轉載,請註明出處,否則將追究法律責任。

相關文章