日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 开启记录慢查询记录

發(fā)布時間:2023/12/19 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 开启记录慢查询记录 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

以下操作,基于 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

?

一,為什么要開啟這個查詢呢?

數(shù)據(jù)庫是很容易產(chǎn)生瓶頸的地方,現(xiàn)在Nosql大家討論這么熱,估計都被數(shù)據(jù)庫搞郁悶了。mysql中最影響速度的就是那些查詢非常慢的語句,這些慢的語句,可能是寫的不夠合理或者是大數(shù)據(jù)下多表的聯(lián)合查詢等等,所以我們要找出這些語句,分析原因,加以優(yōu)化。這也是發(fā)這篇博文的原因

二,開啟mysql的慢查詢

方法1,用命令開啟慢查詢

查看復制打印?
  • mysql>?show?variables?like?"%long%";?????????//查看一下默認為慢查詢的時間10秒??
  • +-----------------+-----------+??
  • |?Variable_name???|?Value?????|??
  • +-----------------+-----------+??
  • |?long_query_time?|?10.000000?|??
  • +-----------------+-----------+??
  • 1?row?in?set?(0.00?sec)??
  • ??
  • mysql>?set?global?long_query_time=2;??????????//設置成2秒,加上global,下次進mysql已然生效??
  • Query?OK,?0?rows?affected?(0.00?sec)??
  • ??
  • mysql>?show?variables?like?"%slow%";??????????//查看一下慢查詢是不是已經(jīng)開啟??
  • +---------------------+---------------------------------+??
  • |?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';????????????????????????//加上global,不然會報錯的。??
  • 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%";??????????????//查看是否已經(jīng)開啟??
  • +---------------------+---------------------------------+??
  • |?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里面記錄下來的數(shù)據(jù),分析一下顯示出來。其實自己寫一個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語句的執(zhí)行情況,包括執(zhí)行時間,鎖定時間等,所以要不要分析工具看個人情況,分析工具很多,在這兒只說一下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?????//排序方式query次數(shù),時間,lock的時間和返回的記錄數(shù)來排序??
  • ?-r???????????reverse?the?sort?order?(largest?last?instead?of?first)???????//倒排序??
  • ?-t?NUM???????just?show?the?top?n?queries???????????????????????????????????????//顯示前N多個??
  • ?-a???????????don't?abstract?all?numbers?to?N?and?strings?to?'S'?
  • ?-n?NUM???????abstract?numbers?with?at?least?n?digits?within?names???//抽象的數(shù)字,至?少有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 的錯誤,如果存在,則對應調整參數(shù)即可。

    2、出現(xiàn)“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.” 的錯誤時

     根據(jù)提示是說 log-slow-queries 以后會移除,建議采用 slow-query-log 和 slow-query-log-file 代替。

      OK,按照提示做即可。

    ?

    轉載于:https://www.cnblogs.com/AloneSword/p/3481741.html

    總結

    以上是生活随笔為你收集整理的mysql 开启记录慢查询记录的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。