慢查詢日誌是什麼?
慢查詢日誌是mysql提供的一種專門記錄sql執行時間超過預先設定好閾值的語句等資訊
慢查詢日誌怎麼開啟?
慢查詢日誌是預設關閉的!
可以通過命令進行檢視慢日誌的狀態
show variables like '%slow_query_log%'; #檢視慢日誌狀態
開啟慢日誌的命令(1代表開啟,0代表關閉)
set global slow_query_log=1;
#開啟慢日誌,只對本次有效,重啟之後還是關閉的。
如果想要永久生效的話,就需要修改my.cnf檔案
在[mysqld]下新增
slow_query_log=1slow_query_log_file=/var/lib/mysql/node-slow.log #這個代表的是慢日誌檔案存放的路徑
慢日誌不在調優的時候一般是關閉的,因為開啟慢日誌多多少少會降低效率。
什麼樣的查詢語句才能稱為慢查詢呢?慢日誌會記錄什麼樣的sql呢?
這個是由引數long_query_time控制的,此值的預設值為10秒。
當某一條語句的執行時間大於這個引數值的時候,(等於的話不會被記錄),就會被慢日誌給記錄下來
show variables like 'long_query_time%'; #檢視設定的時間閾值
修改long_query_time的值的方法
set global long_query_time=3; #設定慢查詢時間的閾值為3秒
注意:執行完上面的語句後,在此進行檢視的時候,會發現值沒有變過來,
這時候需要重新開乙個會話,或者斷開連線之後重連,更或者換一條命令進行查詢,就可以看到你修改後的值了
當然你也可以使用配置my.cnf檔案的方式進行修改,在[mysqld]下新增如下引數(前題是)
slow_query_log=1slow_query_log_file=/var/lib/mysql/node-slow.log#這個代表的是慢日誌檔案存放的路徑
long_query_time=3;
log_output=file
模擬一條慢查詢語句
select sleep(4);#在這條sql執行期間,睡眠4秒
執行完成之後,開啟慢日誌檔案進行檢視,如下圖所示
如果我們想要統計一共記錄了多少條慢sql語句,可以使用如下命令
日誌分析工具mysqldumpslow
常用屬性
s:表示按照何種方式排序
c:訪問次數
l:鎖定時間
r:返回記錄
t:查詢時間
al:平均鎖定時間
ar:平均返回記錄數
at:平均查詢時間
t:即為返回前面多少條的資料:
g:後邊搭配乙個正則匹配模式,大小寫不敏感的
舉個例子:
mysqldumpslow -s r -t 10 /var/lib/mysql/node-slow.log
得到返回記錄集最多的10條sql
這些是本人學習mysql優化,對於慢查詢日誌的總結,不足之處,請大家指出,謝謝
Mysql5 0 儲存過程
stored routines require the proc table in the mysql database.mysql.proc 心得 1.建立儲存過程之前,使用delimiter 來定義語句結束符,建立完成後,還原語句結束符 delimiter 由於mysql預設以 為分隔符,則過程...
Mysql5 0 儲存過程
stored routines require the proc table in the mysql database.mysql.proc 心得 1.建立儲存過程之前,使用delimiter 來定義語句結束符,建立完成後,還原語句結束符 delimiter 由於mysql預設以 為分隔符,則過程...
Mysql5 0 儲存過程
stored routines require the proc table in the mysql database.mysql.proc 心得 1.建立儲存過程之前,使用delimiter 來定義語句結束符,建立完成後,還原語句結束符 delimiter 由於mysql預設以 為分隔符,則過程...