概述
文章簡單介紹了通過一些查詢命令分析當前伺服器的狀態。
目錄步驟
獲取伺服器整體的效能狀態
首先對乙個資料庫伺服器進行效能優化需要先知道伺服器當前主要的效能問題出現在**,在這點sql server也是類似,sql server首先會分析當前伺服器的等待型別的情況。
我們可以使用show [session|global] status命令來獲取想要的資訊,預設是顯示當前連線的所有統計引數值,還可以直接查詢information_schema資料庫中的session_status表。
show status;
#或者使用useinformation_schema;select * from session_status;
我當前的mysql版本是5.6.21,總共查詢出了341行引數。
sql操作計數
接下來我們主要分析裡面的com_引數,com_引數各種sql對資料庫執行的操作。
show status like 'com_%';
#或者使用useinformation_schema;select * from session_status where variable_name like 'com_%';
各種sql操作計數總共有142個,不同的版本結果不一樣,接下來就來測試一下,表中的alter table的當前連線的操作次數為0,現在我修改一下表看看結果。
可以看到alter_table計數增加了1。
com_計數裡面有幾個比較重要的引數,其它的一些引數也經常用來做參考。
com_delete:執行delete操作的次數。
com_select:執行select操作的次數。
com_insert:執行insert操作的次數,對應批量插入操作無論裡面迴圈多少次都只算一次。
com_update:執行update操作的次數。
com_commit:執行事務提交的次數。
com_rollback:執行事務回滾的次數。
上面的計數包括所有的儲存引擎,有幾個引數是單獨針對innodb儲存引擎,記錄了read,inserted,updated,deleted每種操作的行數。
show status like 'innodb_rows%';
#或者使用useinformation_schema;select * from session_status where variable_name like 'innodb_rows%';
定位效率低的sql語句
1.可以通過慢查詢日誌來定位,慢查詢只能查詢已經執行結束的語句,如果要查詢當前正發生的問題無法做到,這個方法在後面一篇文章介紹mysql日誌會詳細介紹。
由於我將慢查詢的時間設為0.01秒,所以超過這個值的都會記錄下來,上面的截圖就是慢查詢日誌裡面的一條sql操作記錄,記錄中記錄了在什麼時候執行的操作,執行操作的使用者資訊,執行花了0.19秒,鎖花了0.001秒,返回了0行,查詢了1行。
2.使用show processlist命令查詢當前進行執行緒,該命令經常用來分析當前伺服器的狀況。
上圖中有後四個字段需要理解,其中
command:記錄了當前查詢的乙個狀態,休眠(sleep),查詢(query),連線(connect)。
time:持續的時間,單位是秒,經常會使用這個值來做分析操作。
state:當前語句的狀態,這個狀態值很重要,這個狀態值很多,大家可以去了解一下,上圖就是等待表解鎖。
info:記錄操作語句
3.借助第三方監控工具
總結文章的知識點涉及的內容其實很多,這裡只是簡單的寫了一下,包括伺服器裡的很多狀態都是很重要的,文章只是單單拿出了sql操作的計數來講,其它的一些包括connections,slow_queries,innodb_data_,innodb_buffer_pool_等等都是非常有用的一些計數,由於太多這裡就沒有全部拿出來分析,文章中也給出了乙個連線介紹了其它的一些計數的含義。
備註:《歡迎交流討論》
MySQL分析伺服器狀態
概述 文章簡單介紹了通過一些查詢命令分析當前伺服器的狀態。目錄 概述獲取伺服器整體的效能狀態 sql操作計數總結 步驟 獲取伺服器整體的效能狀態 首先對乙個資料庫伺服器進行效能優化需要先知道伺服器當前主要的效能問題出現在 在這點sql server也是類似,sql server首先會分析當前伺服器的...
監控mysql狀態 監控mysql狀態指令碼
監控mysql狀態,發現宕後,自動重啟,每秒檢查一次。check.sh bin bash while true do bin sleep 1 sh mysql status.sh done chengkill bin sh pid kill thread for chenglee if filefo...
MySql優化 觀察伺服器狀態
通常在對mysql進行優化的時候,不要一上來就去優化mysql的語句。mysql的優化是乙個系統話的過程,我們要自上而下來對mysql進行優化。mysql優化的第一步是觀察伺服器狀態,找出出問題的地方在 然後才能有的放矢。我們可以使用show status和show processlist命令來觀察...