效能測試mysql慢SQL定位以及分析方法

2021-07-24 10:04:59 字數 2625 閱讀 7366

效能測試過程定性的效能測試經常需要對mysql進行監控以及sql優化,其中慢sql和索引一直都是

一、通過mysql自帶的日誌查詢

1、最常見的是直接讀取或者使用spotlight、monyog等第三方工具展示slow log。

首先在server端配置開啟slow_log以及時間閾值。修改/etc/my.cnf(該配置在5.6下親測可用),修改完成後重啟mysql服務

slow-query-log=1

slow_query_log_file=/tmp/slow.log

long_query_time=5

1代表開啟,0代表關閉。

5代表記錄大於5秒的。

測試步驟1、select sleep(6) from dual;

2、檢視slow.log

# time: 161107 11:16:37

# user@host: root[root] @  [***.***.***.***]  id:     2

# query_time: 6.000728  lock_time: 0.000000 rows_sent: 1  rows_examined: 0

set timestamp=1478488597;

select sleep(6) from dual limit 0, 1000;

可以看到我們的乙個大於5秒閾值的延時查詢已經被記錄下來了。

3、或者可以在一些工具的slow_log中進行記錄。

一般該方法可以配合log_queries_not_using_indexes查詢出慢而且無索引的查詢並且針對起進行索引的建立或者索引型別的優化。

二、通過mysqlsla查詢

安裝mysqlsla

yum -y install perl-extutils-cbuilder perl-extutils-makemaker

yum -y install perl-dbi perl-dbd-mysql

yum -y install perl-cpan

然後進入perl-cpan

perl -mcpan -e shell
進入後

cpan > install yaml

cpan > install time::hires

遇到提示則全部輸入yes

執行make && make install;

啟動遇到錯誤

begin failed--compilation aborted at /usr/local/bin/mysqlsla line 2095.

yum -y  install perl-time-hires

問題解決。

統計slow.log簡單例子

總查詢次數 (queries total), 去重後的sql數量 (unique)

輸出報表的內容排序(sorted by)

最重大的慢sql統計資訊, 包括 平均執行時間, 等待鎖時間, 結果行的總數, 掃瞄的行總數.

count, sql的執行次數及佔總的slow log數量的百分比.

time, 執行時間, 包括總時間, 平均時間, 最小, 最大時間, 時間佔到總慢sql時間的百分比.

95% of time, 去除最快和最慢的sql, 覆蓋率佔95%的sql的執行時間.

lock time, 等待鎖的時間.

95% of lock , 95%的慢sql等待鎖時間.

rows sent, 結果行統計數量, 包括平均, 最小, 最大數量.

rows examined, 掃瞄的行數量.

database, 屬於哪個資料庫

users, 哪個使用者,ip, 佔到所有使用者執行的sql百分比

query abstract, 抽象後的sql語句

query sample, sql語句

mysqlsla常用引數說明:

1) -log-type (-lt) type logs:

通過這個引數來制定log的型別,主要有slow, general, binary, msl, udl,分析slow log時通過制定為slow.

2) -sort:

制定使用什麼引數來對分析結果進行排序,預設是按照t_sum來進行排序。

t_sum:按總時間排序

c_sum:按總次數排序

c_sum_p: sql語句執行次數佔總執行次數的百分比。

3) -top:

顯示sql的數量,預設是10,表示按規則取排序的前多少條

4) –statement-filter (-sf) [+-][type]:

過濾sql語句的型別,比如select、update、drop.

[type]有select, create, drop, update, insert,例如"+select,insert",不出現的預設是-,即不包括。

5) db:要處理哪個庫的日誌:

測試mysql語句效能 SQL語句效能測試

隨著軟體系統的複雜度提高,軟體系統的效能瓶頸可能出現的地方有很多,可能是 也可能是應用伺服器,可能是前端介面層,也可能是中介軟體,還有,可能是資料庫。而對於資料庫出現瓶頸而言,又要分兩種情況,一種是資料庫架構 設計有問題 另外一種則是提交處理的sql語句有問題。據統計,在資料庫應用系統中,大部分的效...

MySQL如何定位並優化慢查詢sql

show variables like query 查詢慢日誌相關資訊 slow query log 預設是off關閉的,使用時,需要改為on 開啟 slow query log file 記錄的是慢日誌的記錄檔案 long query time 預設是10s,每次執行的sql達到這個時長,就會被記...

MySQL如何定位並優化慢查詢sql

show variables like query 查詢慢日誌相關資訊 slow query log 預設是off關閉的,使用時,需要改為on 開啟 slow query log file 記錄的是慢日誌的記錄檔案 long query time 預設是10s,每次執行的sql達到這個時長,就會被記...