MySQL調優三部曲(一)慢查詢

          MySQL調優三部曲(一)慢查詢
開啓慢查詢日誌,能夠讓MySQL記錄下查詢超過指定時間的語句,經過定位分析性能的瓶頸,能夠更好的優化MySQL的性能mysql

參數說明
slow_query_log: 慢查詢開啓狀態(on/off)
slow_query_log_file: 慢查詢日誌存放位置(該目錄須要MySQL的運行帳號可寫權限,通常設置爲MySQL的數據存放目錄)
long_query_time: 查詢超過多少秒才記錄
設置步驟
1. 查看慢查詢相關參數
<code>mysql> show variables like 'slow_query%';
+---------------------+--------------------------------------+
|Variable_name | Value |
+---------------------+--------------------------------------+
| slow_query_log | OFF |
| slow_query_log_file | /var/lib/mysql/9e598ca46b66-slow.log |
+---------------------+--------------------------------------+
2 rows in set (0.00 sec)mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec)</code>
2. 設置sql

全局變量設置
開啓慢查詢性能

<code>mysql> set global slow_query_log=ON; </code>
設置慢查詢日誌存放位置優化

<code>mysql> set global slow_query_log_file=/var/lib/mysql/slow.log;</code>
設置超時時間spa

<code>mysql> set global long_query_time=2;</code>
ps1: 使用命令 set global long_query_time=2修改後,須要從新鏈接或新開一個會話才能看到修改值rest

ps2: 不知道爲啥,我用全局設置的方法老是寫不了慢查詢日誌,重啓也不行日誌

配置文件設置
修改配置文件my.cnf,在[mysqld]下添加code

<code>[mysqld]slow_query_log = ONslow_query_log_file = /var/lib/mysql/slow.loglong_query_time = 2</code>
重啓MySQL服務排序

service mysqld restart變量

慢查詢分析
mysqldumpslow -s [Parameter] -t [Parameter] /var/lib/mysql/slow.log
參數
-s : 排序方式

c:query執行的次數
t:sql執行的時間
l:lock鎖表的時間
r:sql返回的行數
-t: top,返回前n條數據

-g: 正則匹配,大小寫不敏感

返回執行時間最長的前兩個query
mysqldumpslow -s t -t 2 /var/lib/mysql/slow.log

顯示執行次數最多的前兩個query
mysqldumpslow -s c -t 2 /var/lib/mysql/slow.log

返回按照時間排序的前10條裏面含有左鏈接的查詢語句mysqldumpslow -s t -t 10 -g "left join" /database/mysql/slow-log

相關文章
相關標籤/搜索