mysql效能監控指標

rainbowbridg發表於2012-06-01

ref: http://hi.baidu.com/jiaofu1127/blog/item/4ada5790f8b608146f068cb8.htm

[@more@]

1.系統mysql的程式數

ps -ef | grep "mysql" | grep -v "grep" | wc –l

2.Slave_running

mysql > show status like 'Slave_running';

如果系統有一個從複製伺服器,這個值指明瞭從伺服器的健康度

3.Threads_connected

mysql > show status like 'Threads_connected';

當前客戶端已連線的數量。這個值會少於預設的值,但你也能監視到這個值較大,這可保證客戶端是處在活躍狀態。

4.Threads_running

mysql > show status like 'Threads_running';

如果資料庫超負荷了,你將會得到一個正在(查詢的語句持續)增長的數值。這個值也可以少於預先設定的值。這個值在很短的時間內超過限定值是沒問題的。當Threads_running值超過預設值時並且該值在5秒內沒有回落時, 要同時監視其他的一些值。

5.Aborted_clients

mysql > show status like 'Aborted_clients';

客戶端被異常中斷的數值,即連線到mysql伺服器的客戶端沒有正常地斷開或關閉。對於一些應用程式是沒有影響的,但對於另一些應用程式可能你要跟蹤該值,因為異常中斷連線可能表明了一些應用程式有問題。

6.Questions

mysql> show status like 'Questions';

每秒鐘獲得的查詢數量,也可以是全部查詢的數量,根據你輸入不同的命令會得到你想要的不同的值。

7.Handler_*

mysql> show status like 'Handler_%';

如果你想監視底層(low-level)資料庫負載,這些值是值得去跟蹤的。

如果Handler_read_rnd_next值相對於你認為是正常值相差懸殊,可能會告訴你需要最佳化或索引出問題了。Handler_rollback表明事務被回滾的查詢數量。你可能想調查一下原因。

8.Opened_tables

mysql> show status like 'Opened_tables';

表快取沒有命中的數量。如果該值很大,你可能需要增加table_cache的數值。典型地,你可能想要這個值每秒開啟的表數量少於12

9.Select_full_join

mysql> show status like 'Select_full_join';

沒有主鍵(key)聯合(Join)的執行。該值可能是零。這是捕獲開發錯誤的好方法,因為一些這樣的查詢可能降低系統的效能。

10.Select_scan

mysql> show status like 'Select_scan';

執行全表搜尋查詢的數量。在某些情況下是沒問題的,但佔總查詢數量該比值應該是常量(即Select_scan/總查詢數量商應該是常數)。如果你發現該值持續增長,說明需要最佳化,缺乏必要的索引或其他問題。

11.Slow_queries

mysql> show status like 'Slow_queries';

超過該值(--long-query-time)的查詢數量,或沒有使用索引查詢數量。對於全部查詢會有小的衝突。如果該值增長,表明系統有效能問題。

12.Threads_created

mysql> show status like 'Threads_created';

該值應該是低的。較高的值可能意味著你需要增加thread_cache的數值,或你遇到了持續增加的連線,表明了潛在的問題。

13.客戶端連線程式數

shell> mysqladmin processlist

mysql> show processlist;

你可以透過使用其他的統計資訊得到已連線執行緒數量和正在執行執行緒的數量,檢查正在執行的查詢花了多長時間是一個好主意。如果有一些長時間的查詢,管理員可以被通知。你可能也想了解多少個查詢是在"Locked"的狀態—---該值作為正在執行的查詢不被計算在內而是作為非活躍的。一個使用者正在等待一個資料庫響應。

14.innodb狀態

mysql> show innodb status;

該語句產生很多資訊,從中你可以得到你感興趣的。首先你要檢查的就是從最近的XX秒計算出來的每秒的平均負載

(1)Pending normal aio reads: 該值是innodb io請求查詢的大小(size)。如果該值大到超過了10—20,你可能有一些瓶頸。

(2)reads/s, avg bytes/read, writes/s, fsyncs/s:這些值是io統計。對於reads/writes大值意味著io子系統正在被裝載。適當的值取決於你係統的配置。

(3)Buffer pool hit rate:這個命中率非常依賴於你的應用程式。當你覺得有問題時請檢查你的命中率

(4)inserts/s, updates/s, deletes/s, reads/s:有一些Innodb的底層操作。你可以用這些值檢查你的負載情況檢視是否是期待的數值範圍。

15.主機效能狀態

shell> uptime

16.CPU使用率

shell> top

shell> vmstat

17.磁碟IO

shell> vmstat

shell> iostat

18.swap進出量(記憶體)

shell> free

19.MySQL錯誤日誌

在伺服器正常完成初始化後,什麼都不會寫到錯誤日誌中,因此任何在該日誌中的資訊都要引起管理員的注意。20.InnoDB表空間資訊

InnoDB僅有的危險情況就是表空間填滿----日誌不會填滿。檢查的最好方式就是:show table status;你可以用任何InnoDB表來監視InnoDB表的剩餘空間。

21.QPS每秒Query

QPS = Questions(or Queries) / seconds

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

22.TPS(每秒事務量)

TPS = (Com_commit + Com_rollback) / seconds

mysql > show status like 'Com_commit';

mysql > show status like 'Com_rollback';

23.key Buffer 命中率

key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%

key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%

mysql> show status like 'Key%';

24.InnoDB Buffer命中率

Innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%

mysql> show status like 'innodb_buffer_pool_read%';

25.Query Cache命中率

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

mysql> show status like 'Qcache%';

26.Table Cache狀態量

mysql> show status like 'open%';

27.Thread Cache 命中率

Thread_cache_hits = (1 - Threads_created / connections ) * 100%

mysql> show status like 'Thread%';

mysql> show status like 'Connections';

28.鎖定狀態

mysql> show status like '%lock%';

29.複製延時量

mysql > show slave status

30.Tmp Table狀況(臨時表狀況)

mysql > show status like 'Create_tmp%';

31.Binlog Cache使用狀況

mysql > show status like 'Binlog_cache%';

32.Innodb_log_waits

mysql > show status like 'innodb_log_waits';

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

相關文章