1. 程式人生 > >mysql5.7效能查詢20個常用命令

mysql5.7效能查詢20個常用命令



1,檢視每個客戶端IP過來的連線消耗了多少資源。
mysql> select * from host_summary;


2,檢視某個資料檔案上發生了多少IO請求。
mysql> select * from io_global_by_file_by_bytes;

3,檢視每個使用者消耗了多少資源。
mysql> select * from user_summary;

4,檢視總共分配了多少記憶體。
mysql> select * from memory_global_total;

5,資料庫連線來自哪裡,以及這些連線對資料庫的請求情況是怎樣的?
檢視當前連線情況。
mysql> select host, current_connections, statements from host_summary;


6,檢視當前正在執行的SQL和執行show full processlist的效果相當。
mysql> select conn_id, user, current_statement, last_statement from session;

7,資料庫中哪些SQL被頻繁執行?
執行下面命令查詢TOP 10最熱SQL。
mysql> select db,exec_count,query from statement_analysis order by exec_count desc limit 10;


8,哪個檔案產生了最多的IO,讀多,還是寫的多?
mysql> select * from io_global_by_file_by_bytes limit 10;


9,哪個表上的IO請求最多?
mysql> select * from io_global_by_file_by_bytes where file like '%ibd' order by total desc limit 10;

10,哪個表被訪問的最多?
先訪問statement_analysis,根據熱門SQL排序找到相應的資料表。
哪些語句延遲比較嚴重?
檢視statement_analysis中avg_latency的最高的SQL。
mysql> select * from statement_analysis order by avg_latency desc limit 10;

11,或者檢視statements_with_runtimes_in_95th_percentile檢視。
mysql> select * from statements_with_runtimes_in_95th_percentile;

12,哪些SQL執行了全表掃描或執行了排序操作?
mysql> select * from statements_with_sorting;

 mysql> select * from statements_with_full_table_scans;

13,哪些SQL語句使用了臨時表,又有哪些用到了磁碟臨時表?
檢視statement_analysis中哪個SQL的tmp_tables 、tmp_disk_tables值大於0即可。
mysql> 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;

14,也可以檢視statements_with_temp_tables檢視。
mysql> select * from statements_with_temp_tables\G


15 哪個表佔用了最多的buffer pool?
mysql> select * from innodb_buffer_stats_by_table order by allocated desc limit 10;

16,每個庫(database)佔用多少buffer pool?
mysql> select * from innodb_buffer_stats_by_schema order by allocated desc limit 10;

17,每個連線分配多少記憶體?
利用session表和memory_by_thread_by_current_bytes分配表進行關聯查詢。
mysql> 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;

18,MySQL自增長欄位的最大值和當前已經使用到的值?
mysql> select * from schema_auto_increment_columns;

19,MySQL索引使用情況統計?
mysql> select * from schema_index_statistics;

20,MySQL有哪些冗餘索引和無用索引?
mysql> select * from schema_redundant_indexes;

mysql> select * from schema_unused_indexes;

21,MySQL內部有多個執行緒在執行?
MySQL內部的執行緒型別及數量。
mysql> select user, count(*) from processlist group by user;

寫到這裡,其實我們只涉及到 sys schema 很少的一部分功能。估計MySQL的官方AWR也要快出現了,大家也可以期待一下(MySQL 8.0這塊又進一步規範了一下)。