如何监视MySQL的性能
生活随笔
收集整理的這篇文章主要介紹了
如何监视MySQL的性能
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這里列出了一些如何監視你安裝的mysql性能的一些ideas。監視總是一個持續的過程。你需要知道哪種模式對你的數據庫是好的,什么是問題的表象,甚至是危險的情況。
一下列出了用來去監視你的系統的主要參數:
- mysqladmin extended (絕對值)
- mysqladmin extended -i10 -r (相對值)
- mysqladmin processlist
- mysql -e "show innodb status"
- OS data. vmstat/iostat
- MySQL error log
- InnoDB tablespace info.
1) mysqladmin extended (絕對值)?
重點去監視的值有:
* Slave_running:如果系統有一個從復制服務器,這個值指明了從服務器的健康度
* Threads_connected:當前客戶端已連接的數量。這個值會少于預設的值,但你也能監視到這個值較大,這可保證客戶端是處在活躍狀態。
* Threads_running:如果數據庫超負荷了,你將會得到一個正在(查詢的語句持續)增長的數值。這個值也可以少于預先設定的值。這個值在很短的時間內超過限定值是沒問題的。當Threads_running值超過預設值時并且該值在5秒內沒有回落時, 要同時監視其他的一些值。
2)mysqladmin extended(計數器)
* Aborted_clients:客戶端被異常中斷的數值(因為連接到mysql服務器的客戶端沒有正常地斷開或關閉)。對于一些應用程序是沒有影響的,但對于另一些應用程序可能你要跟蹤該值,因為異常中斷連接可能表明了一些應用程序有問題。
* Questions:每秒鐘獲得的查詢數量。也可以是全部查詢的數量(注:可以根據你輸入不同的命令會得到你想要的不同的值)。
* Handler_*:如果你想監視底層(low-level)數據庫負載,這些值是值得去跟蹤的。如果Handler_read_rnd_next值相對于你認為是正常值相差懸殊,可能會告訴你需要優化或索引出問題了。Handler_rollback表明事務被回滾的查詢數量。你可能想調查一下原因。
* Opened_tables:表緩存沒有命中的數量。如果該值很大,你可能需要增加table_cache的數值。典型地,你可能想要這個值每秒打開的表數量少于1或2.
* Select_full_join: 沒有主鍵(key)聯合(Join)的執行。該值可能是零。這是捕獲開發錯誤的好方法,因為一些這樣的查詢可能降低系統的性能。
* Select_scan:執行全表搜索查詢的數量。在某些情況下是沒問題的,但占總查詢數量該比值應該是常量(注:Select_scan除以總查詢數量商應該是常數)。如果你發現該值持續增長,說明需要優化,缺乏必要的索引或其他問題。
* Slow_queries:超過該值(--long-query-time)的查詢數量,或沒有使用索引查詢數量。對于全部查詢會有小的沖突。如果該值增長,表明系統有性能問題。
* Threads_created:該值應該是低的。較高的值可能意味著你需要增加thread_cache的數值,或你遇到了持續增加的連接,表明了潛在的問題。
3)mysqladmin processlist or "SHOW FULL PROCESSLIST"命令
你可以通過使用其他的統計信息得到已連接線程數量和正在運行線程的數量,檢查正在運行的查詢花了多長時間是一個好主意。如果有一些長時間的查詢(由于很差的構思或公式),管理員可以被通知。你可能也想了解多少個查詢是在"Locked"的狀態—---該值作為正在運行的查詢不被計算在內而是作為非活躍的。一個用戶正在等待一個數據庫響應。
4) "SHOW INNODB STATUS"命令
該語句產生很多信息,從中你可以得到你感興趣的。首先你要檢查的就是“從最近的XX秒計算出來的每秒的平均負載”。
* Pending normal aio reads: 該值是innodb io請求查詢的大小(size)。如果該值大到超過了10—20,你可能有一些瓶頸。
* reads/s, avg bytes/read, writes/s, fsyncs/s:這些值是io統計。對于reads/writes大值意味著io子系統正在被裝載。適當的值取決于你系統的配置。
* Buffer pool hit rate:這個命中率非常依賴于你的應用程序。當你覺得有問題時請檢查你的命中率
* inserts/s, updates/s, deletes/s, reads/s:有一些Innodb的底層操作。你可以用這些值檢查你的負載情況查看是否是期待的數值范圍。
4)OS數據。查看系統狀態好的工具是vmstat/iostat/mpstat,這些可以看man手冊
5)MySQL錯誤日志-----在服務器正常完成初始化后,什么都不會寫到錯誤日志中,因此任何在該日志中的信息都要引起管理員的注意。
一下列出了用來去監視你的系統的主要參數:
- mysqladmin extended (絕對值)
- mysqladmin extended -i10 -r (相對值)
- mysqladmin processlist
- mysql -e "show innodb status"
- OS data. vmstat/iostat
- MySQL error log
- InnoDB tablespace info.
1) mysqladmin extended (絕對值)?
重點去監視的值有:
* Slave_running:如果系統有一個從復制服務器,這個值指明了從服務器的健康度
* Threads_connected:當前客戶端已連接的數量。這個值會少于預設的值,但你也能監視到這個值較大,這可保證客戶端是處在活躍狀態。
* Threads_running:如果數據庫超負荷了,你將會得到一個正在(查詢的語句持續)增長的數值。這個值也可以少于預先設定的值。這個值在很短的時間內超過限定值是沒問題的。當Threads_running值超過預設值時并且該值在5秒內沒有回落時, 要同時監視其他的一些值。
2)mysqladmin extended(計數器)
* Aborted_clients:客戶端被異常中斷的數值(因為連接到mysql服務器的客戶端沒有正常地斷開或關閉)。對于一些應用程序是沒有影響的,但對于另一些應用程序可能你要跟蹤該值,因為異常中斷連接可能表明了一些應用程序有問題。
* Questions:每秒鐘獲得的查詢數量。也可以是全部查詢的數量(注:可以根據你輸入不同的命令會得到你想要的不同的值)。
* Handler_*:如果你想監視底層(low-level)數據庫負載,這些值是值得去跟蹤的。如果Handler_read_rnd_next值相對于你認為是正常值相差懸殊,可能會告訴你需要優化或索引出問題了。Handler_rollback表明事務被回滾的查詢數量。你可能想調查一下原因。
* Opened_tables:表緩存沒有命中的數量。如果該值很大,你可能需要增加table_cache的數值。典型地,你可能想要這個值每秒打開的表數量少于1或2.
* Select_full_join: 沒有主鍵(key)聯合(Join)的執行。該值可能是零。這是捕獲開發錯誤的好方法,因為一些這樣的查詢可能降低系統的性能。
* Select_scan:執行全表搜索查詢的數量。在某些情況下是沒問題的,但占總查詢數量該比值應該是常量(注:Select_scan除以總查詢數量商應該是常數)。如果你發現該值持續增長,說明需要優化,缺乏必要的索引或其他問題。
* Slow_queries:超過該值(--long-query-time)的查詢數量,或沒有使用索引查詢數量。對于全部查詢會有小的沖突。如果該值增長,表明系統有性能問題。
* Threads_created:該值應該是低的。較高的值可能意味著你需要增加thread_cache的數值,或你遇到了持續增加的連接,表明了潛在的問題。
3)mysqladmin processlist or "SHOW FULL PROCESSLIST"命令
你可以通過使用其他的統計信息得到已連接線程數量和正在運行線程的數量,檢查正在運行的查詢花了多長時間是一個好主意。如果有一些長時間的查詢(由于很差的構思或公式),管理員可以被通知。你可能也想了解多少個查詢是在"Locked"的狀態—---該值作為正在運行的查詢不被計算在內而是作為非活躍的。一個用戶正在等待一個數據庫響應。
4) "SHOW INNODB STATUS"命令
該語句產生很多信息,從中你可以得到你感興趣的。首先你要檢查的就是“從最近的XX秒計算出來的每秒的平均負載”。
* Pending normal aio reads: 該值是innodb io請求查詢的大小(size)。如果該值大到超過了10—20,你可能有一些瓶頸。
* reads/s, avg bytes/read, writes/s, fsyncs/s:這些值是io統計。對于reads/writes大值意味著io子系統正在被裝載。適當的值取決于你系統的配置。
* Buffer pool hit rate:這個命中率非常依賴于你的應用程序。當你覺得有問題時請檢查你的命中率
* inserts/s, updates/s, deletes/s, reads/s:有一些Innodb的底層操作。你可以用這些值檢查你的負載情況查看是否是期待的數值范圍。
4)OS數據。查看系統狀態好的工具是vmstat/iostat/mpstat,這些可以看man手冊
5)MySQL錯誤日志-----在服務器正常完成初始化后,什么都不會寫到錯誤日志中,因此任何在該日志中的信息都要引起管理員的注意。
6)InnoDB表空間信息。InnoDB僅有的危險情況就是表空間填滿----日志不會填滿。檢查的最好方式就是:show table status;你可以用任何InnoDB表來監視InnoDB表的剩余空間。
本文轉自holy2009 51CTO博客,原文鏈接:http://blog.51cto.com/holy2010/366286
總結
以上是生活随笔為你收集整理的如何监视MySQL的性能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ganglia:分布式监控系统
- 下一篇: mysql错误:……is marked