程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL慢查詢

編輯:關於MYSQL數據庫

打開MySQL慢查詢
MySQL慢查詢記錄日志對於跟蹤PHP+MySQL體系下的MySQL負載調優問題很有用處,比如安裝了很多Discuz!插件的用戶,這樣可以大概排查出那些插件有代碼問題。其實啟用MySQL的慢查詢日志很簡單,只需要在MySQL的配置文件裡添加log-slow-querIEs和 long_query_time兩個參數即可。

今天有個朋友問我,就順帶記錄上來。更多的MySQL 優化信息可以查看這裡:http://www.ccvita.com/category/MySQL

Windows下開啟MySQL慢查詢
MySQL在Windows系統中的配置文件一般是是my.ini找到[MySQLd]下面加上
log-slow-querIEs = F:\MySQL\log\MySQLslowquery.log
long_query_time = 2

Linux下啟用MySQL慢查詢
MySQL在Windows系統中的配置文件一般是是my.cnf找到[MySQLd]下面加上
log-slow-querIEs=/data/MySQLdata/slowquery.log
long_query_time=2

注意
log-slow-querIEs = F:\MySQL\log\mysqlslowquery.log為慢查詢日志存放的位置,一般這個目錄要有MySQL的運行帳號的可寫權限,一般都將這個目錄設置為MySQL的數據存放目錄;
long_query_time=2中的2表示查詢超過兩秒才記錄;

2009年09月24日更新
在my.cnf或者my.ini中添加log-querIEs-not-using-indexes參數,表示記錄下沒有使用索引的查詢。比如:
log-slow-querIEs=/data/MySQLdata/slowquery.log
long_query_time=2
log-querIEs-not-using-indexes

MySQLdumpslow命令
/path/mysqldumpslow -s c -t 10 /database/MySQL/slow-log
這會輸出記錄次數最多的10條SQL語句,其中:

  • -s, 是表示按照何種方式排序,c、t、l、r分別是按照記錄次數、時間、查詢時間、返回的記錄數來排序,ac、at、al、ar,表示相應的倒敘;
  • -t, 是top n的意思,即為返回前面多少條的數據;
  • -g, 後邊可以寫一個正則匹配模式,大小寫不敏感的;

比如
/path/mysqldumpslow -s r -t 10 /database/MySQL/slow-log
得到返回記錄集最多的10個查詢。
/path/mysqldumpslow -s t -t 10 -g “left join” /database/MySQL/slow-log
得到按照時間排序的前10條裡面含有左連接的查詢語句。

SHOW VARIABLES
SHOW VARIABLES是查看MySQL的配置參數,還可以使用類似SHOW VARIABLES LIKE ‘Key%’

SHOW PROCESSLIST
SHOW PROCESSLIST是查看當前正在進行的進程,對於有鎖表等情況的排查很有用處。一般情況下,打開MySQL的慢查詢記錄 同樣有利於排查。

SHOW OPEN TABLES
SHOW OPEN TABLES是顯示當前已經被打開的表列表。

小結
使用mysqldumpslow命令可以非常明確的得到各種我們需要的查詢語句,對MySQL查詢語句的監控、分析、優化是MySQL優化的第一步,也是非常重要的一步。

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