程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 如何獲取有性能問題的SQL,獲取性能問題SQL

如何獲取有性能問題的SQL,獲取性能問題SQL

編輯:MySQL綜合教程

如何獲取有性能問題的SQL,獲取性能問題SQL


1.通過用戶反饋獲取存在性能問題的SQL.

 

2.通過慢查日志獲取存在性能的SQL.

 

啟動慢查日志

slow_query_log=on

 

set global slow_query_log=on;

image

slow_query_log_file 指定慢查日志存儲路徑及文件

默認情況保存在mysql的數據目錄中,最好日志存儲和數據存儲分開。

long_query_time

image

指定記錄慢查日志SQL執行時間的閥值,單位為秒,默認值為10秒。精確到微秒,

如果為一毫秒這個值為 0.001 。

記錄的語句包括

1.查詢語句

2.數據修改語句

3.已經回滾的SQL

 

log_queries_not_using_indexes 是否記錄未使用索引的SQL

 

慢查日志中記錄的內容:

image

第一行記錄了:

用戶信息,線程ID號 用戶信息 sbtest ,線程ID為 17

第二行 :記錄了查詢時間

第三行 :鎖的時間

第四行 : 返回的記錄行數

第五行: 掃描的行數

第六行 : 執行的時間

第七行 : 執行的語句

 

常用慢查詢日志分析工具

1.mysqldumpslow

匯總除查詢條件外其他完全相同的SQL,並將分析結果按照參數中指定的順序輸出。

mysqldumpslow –s r –t 10 slow.log

-s order (c,t,l,r,at,al,ar)

c: 總的次數

t:總的時間

l:鎖的時間

r: 總數據行

at,al,ar: t,l,r 的平均數

at 總時間 /總次數

 

-t top 指定取前幾條作為結果輸出

 

2.pt-query-digest

pt-query-digest –explain -h=127.0.0.1,u=root,p=root slow.log>slow.report

可以包括執行計劃。

 

3.實時獲取性能的問題的SQL

 

image

 

select id,user,host,db,command ,time,state,info from information_schema.processlist where time>60;

查詢服務器中查詢時間超過60秒的SQL.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved