生活随笔
收集整理的這篇文章主要介紹了
mysql 开启记录慢查询记录
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
以下操作,基于 mysql 5.5.31 版本源碼安裝配置。
修改 /etc/my.cnf 中 [mysqld] 中添加如下行
# 5.3 一下的配置
log-slow-queries=/var/log/mysql-slow.log ? # 慢消息的記錄 long_query_time=3 # 慢消息的閥值 log-queries-not-using-indexes ? ? ? ? ? ? ? ? ? ? ? ?# 記錄不使用索引的查詢
# 5.3+ 配置
long_query_time=3 # 慢消息的閥值
slow-query-log=ON
slow-query-log-file=/var/log/mysql-slow.log
?
參考鏈接:
http://blog.51yip.com/mysql/972.html
?
一,為什么要開啟這個查詢呢?
數據庫是很容易產生瓶頸的地方,現在Nosql大家討論這么熱,估計都被數據庫搞郁悶了。mysql中最影響速度的就是那些查詢非常慢的語句,這些慢的語句,可能是寫的不夠合理或者是大數據下多表的聯合查詢等等,所以我們要找出這些語句,分析原因,加以優化。這也是發這篇博文的原因
二,開啟mysql的慢查詢
方法1,用命令開啟慢查詢
查看復制打印?
mysql>?show?variables?like?"%long%" ;??????????? +-----------------+-----------+?? |?Variable_name???|?Value?????|?? +-----------------+-----------+?? |?long_query_time?|?10.000000?|?? +-----------------+-----------+?? 1?row?in?set?(0.00?sec)?? ?? mysql>?set?global ?long_query_time=2;???????????? Query?OK,?0?rows?affected?(0.00?sec)?? ?? mysql>?show?variables?like?"%slow%" ;???????????? +---------------------+---------------------------------+?? |?Variable_name???????|?Value???????????????????????????|?? +---------------------+---------------------------------+?? |?log_slow_queries????|?OFF?????????????????????????????|?? |?slow_launch_time????|?2???????????????????????????????|?? |?slow_query_log??????|?OFF?????????????????????????????|?? |?slow_query_log_file?|?/usr/local/mysql/mysql-slow.log?|?? +---------------------+---------------------------------+?? 4?rows?in?set?(0.00?sec)?? ?? mysql>?set?slow_query_log='ON' ;?????????????????????????? ERROR?1229?(HY000):?Variable?'slow_query_log' ?is?a?GLOBAL?variable?and ?should?be?set?with?SET?GLOBAL?? mysql>?set?global ?slow_query_log='ON' ;?????????????? Query?OK,?0?rows?affected?(0.28?sec)?? ?? mysql>?show?variables?like?"%slow%" ;???????????????? +---------------------+---------------------------------+?? |?Variable_name???????|?Value???????????????????????????|?? +---------------------+---------------------------------+?? |?log_slow_queries????|?ON??????????????????????????????|?? |?slow_launch_time????|?2???????????????????????????????|?? |?slow_query_log??????|?ON??????????????????????????????|?? |?slow_query_log_file?|?/usr/local/mysql/mysql-slow.log?|?? +---------------------+---------------------------------+?? 4?rows?in?set?(0.00?sec)?? 方法2,修改mysql的配置文件my.cnf
在[mysqld]里面加上以下內容
long_query_time?=?2?? log-slow-queries?=?/usr/local/mysql/mysql-slow.log?? 重起一下 /usr/local/mysql/libexec/mysqld restart
三,分析工具
分析工具干什么事的呢,其實就是把mysql-slow.log里面記錄下來的數據,分析一下顯示出來。其實自己寫一個shell腳本也是可以把要的信息取出來的。我們來看一下mysql-slow.log里面到底是什么東西
查看復制打印?
[root@BlackGhost?mysql]#?cat?mysql-slow.log??????? /usr/local/mysql/libexec/mysqld,?Version:?5.1.26-rc-log?(Source?distribution).?started?with:?? Tcp?port:?3306??Unix?socket:?/tmp/mysql.sock?? Time?????????????????Id?Command????Argument?? #?Time:?100814?13:28:30?? #?User@Host:?root[root]?@?localhost?[]?? #?Query_time:?10.096500??Lock_time:?0.045791?Rows_sent:?1??Rows_examined:?2374192?? SET?timestamp=1281763710;?? select?count (distinct?ad_code)?as ?x?from?ad_visit_history?where?ad_code?in?(select?ad_code?from?ad_list?where?media_id=15);?? #?Time:?100814?13:37:02?? #?User@Host:?root[root]?@?localhost?[]?? #?Query_time:?10.394134??Lock_time:?0.000091?Rows_sent:?1??Rows_examined:?2374192?? SET?timestamp=1281764222;?? select?count (distinct?ad_code)?as ?x?from?ad_visit_history?where?ad_code?in?(select?ad_code?from?ad_list?where?media_id=15);?? #?Time:?100814?13:37:16?? #?User@Host:?root[root]?@?localhost?[]?? #?Query_time:?4.608920??Lock_time:?0.000078?Rows_sent:?1??Rows_examined:?1260544?? SET?timestamp=1281764236;?? select?count (*)?as ?cou??from?ad_visit_history?where?ad_code?in?(select?ad_code?from?ad_list?where?id=41)?order?by?id?desc;?? 看到了,就是記錄一下sql語句的執行情況,包括執行時間,鎖定時間等,所以要不要分析工具看個人情況,分析工具很多,在這兒只說一下mysql自帶的慢查詢分析工具mysqldumpslow的使用方法。
查看復制打印?
[root@BlackGhost?bin]#?mysqldumpslow?-h?? Option?h?requires?an?argument?? ERROR:?bad?option?? ?? Usage:?mysqldumpslow?[?OPTS...?]?[?LOGS...?]?? ?? Parse?and ?summarize?the?MySQL?slow?query?log.?Options?are?? ?? ?--verbose????verbose?? ?--debug??????debug?? ?--help???????write?this?text?to?standard?output?? ?? ?-v???????????verbose?? ?-d???????????debug???????????? ?-s?ORDER?????what?to?sort?by?(t,?at,?l,?al,?r,?ar?etc),?'at' ?is?default ??????? ?-r???????????reverse?the?sort?order?(largest?last?instead?of?first)????????? ?-t?NUM???????just?show?the?top?n?queries????????????????????????????????????????? ?-a???????????don't?abstract?all?numbers?to?N?and?strings?to?' S' ? ?-n?NUM???????abstract?numbers?with?at?least?n?digits?within?names???//抽象的數字,至?少有n位內的名稱 ??-g?PATTERN???grep:?only?consider?stmts?that?include?this?string??????//配置模式 ??-h?HOSTNAME??hostname?of?db?server?for?*-slow.log?filename?(can?be?wildcard),?????//mysql所以機器名或者IP ??default?is?' *',?i.e.?match?all ??-i?NAME??????name?of?server?instance?(if?using?mysql.server?startup?script) ??-l???????????don' t?subtract?lock?time?from?total?time????????????? 例子:
[root@BlackGhost bin]# ./mysqldumpslow -s r -t 20 /usr/local/mysql/mysql-slow.log
[root@BlackGhost bin]# ./mysqldumpslow -s r -t 20 -g 'count' /usr/local/mysql/mysql-slow.log
?
常見錯誤
1、啟動后未見日志文件生成,請檢查mysql的錯誤日志
show variables like '%log_error%';
即可找到錯誤文件,看看里面是否有 warning 與 error 的錯誤,如果存在,則對應調整參數即可。
2、出現“131219 13:00:39 [Warning] The syntax '--log-slow-queries' is deprecated and will be removed in a future release. Please use '--slow-query-log'/'--slow-query-log-file' instead.” 的錯誤時
根據提示是說 log-slow-queries 以后會移除,建議采用 slow-query-log 和 slow-query-log-file 代替。
OK,按照提示做即可。
?
轉載于:https://www.cnblogs.com/AloneSword/p/3481741.html
總結
以上是生活随笔 為你收集整理的mysql 开启记录慢查询记录 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。