【性能調優】分析mysql性能的語句

1. 系統mysql進程數

在mysql數據庫服務器中查看

ps -ef | grep “mysql” | grep -v “grep” | wc –l

2. 查看從庫數量

show status like 'Slave_running'

在這裏插入圖片描述
查看當前數據庫從庫的數量,在上圖中,該數據庫中沒有從庫

3. 查看客戶端連接數

show status like 'Threads_connected'

在這裏插入圖片描述
當前客戶端已連接的數量,這個值會少於預設的值,可以關注客戶端的連接是否處於活躍狀態

4. 查看激活的線程數

show status like 'Threads_running'

在這裏插入圖片描述
若數據庫超負荷,這個數值將持續增長
在很短的時間內超過限定值是沒問題的,但是當Threads_running值超過預設值時並且該值在5秒內沒有回落時, 要同時監視其他的一些值

5. 查看異常中斷的數值

show status like 'Aborted_clients';

在這裏插入圖片描述
客戶端被異常中斷的數值,即連接到mysql服務器的客戶端沒有正常地斷開或關閉
對於一些應用程序沒有影響,但對另一些應用程序可能會有影響,因爲異常中斷連接可能表明了應用程序可能存在問題

6. 獲取每秒鐘查詢數量

show status like 'Questions';

在這裏插入圖片描述
每秒鐘獲得的查詢數量,也可以是全部查詢的數量

7. 查看底層數據庫負載

show status like 'Handler_%';

在這裏插入圖片描述
如果監視底層(low-level)數據庫負載,需要關注負載的值

  • Handler_read_rnd_next: 如果相對於正常值相差懸殊,可能需要優化或索引出問題
  • Handler_rollback:表明事務被回滾的查詢數量,需要查一下原因

8. 查看錶緩存沒有命中的數量

show status like 'Opened_tables';

在這裏插入圖片描述
如果該值很大,可能需要增加table_cache的數值

9. 沒有主鍵聯合的執行

show status like 'Select_full_join';

在這裏插入圖片描述
沒有主鍵(key)聯合(Join)的執行。該值可能是零
這是捕獲開發錯誤的好方法,因爲一些這樣的查詢可能降低系統的性能

10. 執行全表搜索查詢的數量

show status like 'Select_scan';

在這裏插入圖片描述
在某些情況下是這個是沒有問題的,但佔總查詢數量該比值應該是常量(即Select_scan/總查詢數量Questions應是常數)
如果發現該值持續增長,說明需要優化,缺乏必要的索引或其他問題

11. 查看慢查詢的數量

show status like 'Slow_queries';

在這裏插入圖片描述
超過該值(–long-query-time)的查詢數量,或沒有使用索引查詢數量
如果該值增長,表明系統有性能問題

12. 查看創建用來處理連接的線程數

show status like 'Threads_created';

在這裏插入圖片描述
該值應該是一個比較低低數值,較高的值可能意味着需要增加thread_cache的數值,或遇到了持續增加的連接,表明了潛在的問題

13. 客戶端連接進程數

show processlist;

在這裏插入圖片描述
可以通過使用其他的統計信息得到已連接線程數量和正在運行線程的數量,檢查正在運行的查詢花了多長時間
可以瞭解多少個查詢是在”Locked”的狀態,該值作爲正在運行的查詢不被計算在內而是作爲非活躍的,一個用戶正在等待一個數據庫響應
同時可以看到當前具體執行的sql語句

14. 查詢InnoDB表剩餘空間

show table status

在這裏插入圖片描述
InnoDB僅有的危險情況就是表空間填滿,可以使用該語句監視InnoDB表的剩餘空間

15. QPS每秒Query量

show /* global */ status like 'Question';

在這裏插入圖片描述
QPS = Questions(or Queries) / seconds

16. 臨時表狀況

show status like 'Create_tmp%';

在這裏插入圖片描述
Created_tmp_disk_tables/Created_tmp_tables比值最好不要超過10%,如果Created_tmp_tables值比較大,
可能是排序句子過多或者是連接句子不夠優化

17. 鎖定狀態

show status like '%lock%';

在這裏插入圖片描述
Table_locks_waited/Table_locks_immediate=0.3% 如果這個比值比較大的話,說明表鎖造成的阻塞比較嚴重
Innodb_row_lock_waits innodb行鎖,太大可能是間隙鎖造成的

18. Binlog Cache使用狀況

 show status like 'Binlog_cache%';

在這裏插入圖片描述
如果Binlog_cache_disk_use值不爲0 ,可能需要調大 binlog_cache_size大小

19. Query Cache命中率

show status like 'Qcache%';

在這裏插入圖片描述

Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;

20. Table Cache狀態量

show status like 'open%';

在這裏插入圖片描述
比較 open_tables 與 opend_tables 值

21. Innodb_log_waits量

show status like 'innodb_log_waits';

在這裏插入圖片描述
Innodb_log_waits值不等於0的話,表明 innodb log buffer 因爲空間不足而等待

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章