Mysql慢查询开启

Mysql的查询讯日志是Mysql提供的一种日志记录,它用来记录在Mysql中响应时间超过阈值的语句,具体指运行时间超过long_query_time值得SQL,则会被记录到慢查询日志中。long_query_time的默认为10,意识是运行10秒以上的语句。由它来看那些SQL语句超出了我们的最大忍耐值,比如一条SQL执行超过了5秒,我们就算慢查询,我们就可以结合Explain进行分析。
默认Mysql没有开启慢查询,需要我们说动设置这个参数。当然,如果不是调优需要的话,一般不建议开启该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志写入文件。
进入mysql终端查看是否开启(我这里都是自己改过的)

MySQL [test_db]> show variables like '%slow_query_log%'; +---------------------+----------------------------+
| Variable_name       | Value                      |
+---------------------+----------------------------+
| slow_query_log      | ON                         |
| slow_query_log_file | /data/mysql/mysql-slow.log |
+---------------------+----------------------------+

上面查询结果第一行,这里是开启的,第二行是默认查询路径文件名。

MySQL [test_db]> set global slow_query_log = 0|1; //设置开启或者关闭,0为关闭,1为开启

如果使用set global slow_query_log 命令开启慢查询日志,只对当前数据库生效,如果Mysql重启后则会失效。
补充:如果通过终端命令设定的话,再查询是看不到修改结果的,需要新开启一个窗口查看即可。
如果要永久生效,必须修改配置文件,修改完记得习惯性重启服务。还是那句话,不建议生产环境开启。

[mysqld] slow_query_log = 1 long_query_time = 1 slow_query_log_file = /data/mysql/mysql-slow.log
MySQL [test_db]> show variables like 'long_query_time'; +-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 1.000000 |
+-----------------+----------+

假如SQL运行时间刚好等于long_query_time的情况,并不会被记录下来,也就是说,在Mysql源码里是判断大于long_query_time,而非大于等于

开始测试(在开启慢查询的情况下)

MySQL [test_db]> select sleep(5);

查看慢查询日志文件

# cat /data/mysql/mysql-slow.log # # select sleep(5); # Time: 2018-01-20T18:10:24.443517Z # User@Host: root[root] @ localhost [] Id: 3 # Query_time: 5.000564 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 use test_db; SET timestamp=1524276624; select sleep(5);

以上信息包括实际查询时间5.000564秒,时间戳timestamp=1524276624,还有库test_db,出问题的SQL。

mysqldumpslow用法讲解

上面测试的慢查询SQL只有一条,假如在实际的生产环境中,慢查询SQL远远高于测试的数量,十几条甚至几十条,假如几条慢查询出现的频率很高,我们能做到根据轻重优先级来分析并排除那是不是更好?那么就用到了mysqldumpslow

# mysqldumpslow --help ----------------------------------------------------//执行命令 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 (al, at, ar, c, l, r, t), 'at' is default al: average lock time ar: average rows sent at: average query time c: count l: lock time r: rows sent t: query time -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 -g PATTERN   grep: only consider stmts that include this string-h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard), 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

s:是表示按照何种方式排序
c:访问次数
i:锁定时间
r:返回记录
t:查询时间
al:平均锁定时间
ar:平均返回记录数
at:平均查询时间
t:即为返回前面多少条数据
g:后边搭配一个正则匹配模式,大小写不敏感

mysqldumpslow -s r -t 10 /data/mysql/mysql-slow.log  //得到返回记录集最多的10个SQL
mysqldumpslow -s c -t 10 /data/mysql/mysql-slow.log //得到访问次数最多的10个SQL 
mysqldumpslow -s t -t 10 -g "left join" /data/mysql/mysql-slow.log  //得到按照时间排序的前10条里面含有做了连接的查询SQL
mysqldumpslow -s r -t 10 /data/mysql/mysql-slow.log | more  //另外建议在使用这些命令时结合|和more使用,否则有可能出现爆屏情况

OK~既然学习了,就运用到实际工作中吧~

Mysql优化_慢查询开启说明及Mysql慢查询分析工具mysqldumpslow用法讲解相关推荐

  1. 布尔教育mysql优化_布尔教育燕十八mysql优化视频课件源码分享

    目前数据库是大多数系统进行数据存储的基础组件,数据库的效率对系统的稳定和效率有着至关重要的影响:为了有更好的用户体验,数据库的优化显得异常重要.那么我们要从那些方面对我们的数据库进行优化呢?让我们在& ...

  2. 燕十八 mysql优化_布尔教育燕十八mysql优化视频资料分享

    目前数据库是大多数系统进行数据存储的基础组件,数据库的效率对系统的稳定和效率有着至关重要的影响:为了有更好的用户体验,数据库的优化显得异常重要.那么我们要从那些方面对我们的数据库进行优化呢?让我们在& ...

  3. mysql慢查询日志分析工具比较_MySQL慢查询日志总结 日志分析工具mysqldumpslow

    慢查询日志概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志 ...

  4. 【宋红康 MySQL数据库 】【高级篇】【12】性能分析工具的使用

    持续学习&持续更新中- 学习态度:守破离 [宋红康 MySQL数据库 ][高级篇][12]性能分析工具的使用 数据库服务器的优化步骤 查看系统性能参数 统计SQL的查询成本:last_quer ...

  5. 关于mysql优化_关于MySQL优化的几点总结

    前言 现如今,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.所以,我整理了MySQL优化的几点建议,希望这些优化技巧对您有用,总结不到的,欢迎大家补充. SQL执行慢的原因 ...

  6. mysql 优化_常用MySQL优化

    1.大批量插入数据优化 (1)对于MyISAM存储引擎的表,可以使用:DISABLE KEYS 和 ENABLE KEYS 用来打开或者关闭 MyISAM 表非唯一索引的更新. ALTER TABLE ...

  7. 谈谈mysql优化_浅谈MySQL SQL优化

    本文首发于个人微信公众号<andyqian>,期待你的关注 前言 有好几天没有写文章了,实在不好意思.之前就有朋友希望我写写MySQL优化的文章.我迟迟没有动笔,主要是因为,SQL优化这个 ...

  8. mysql查询开启事务_MySQL中的查询事务问题

    之前帮同学做个app的后台,使用了MySQL+MyBatis,遇到了一个查询提交的问题,卡了很久,现在有时间了来复盘下 环境情况 假设有学生表: USE test; CREATE TABLE `stu ...

  9. mysql 交集_面试官:来说说MySQL的常见优化方案……

    性能优化(Optimize)是在保证系统正确性的前提下,能够更快速响应请求的一种手段. 有些性能问题,比如慢查询等,如果积累到一定的程度或者是遇到急速上升的并发请求之后,会导致严重的后果,轻则造成服务 ...

最新文章

  1. Android源码下载总结
  2. [2774]小P的故事——神奇的发票报销 (sdut)
  3. cv2.imread()用法,注意 第一个参数为图片路径
  4. nginx upstream 调度策略
  5. Yabbly:让经验缔结因果
  6. java知识点_java知识点
  7. Android 中动态的向布局中添加控件
  8. 腾讯音乐Q3财报多点开花,属于数字音乐时代的新浪潮已至
  9. java-HDU1698(线段树的区间更新,和区间查询)
  10. 2014新浪研发project师实习笔试(哈尔滨站)
  11. MDaemon日志报错:550 aa@*.com must check for new mail first
  12. ECMAScript 学习笔记03
  13. windows系统上安装.cab文件
  14. 木子-前端-ajax传值与接收最简单的方式
  15. Mac用命令行在访达中打开指定目录
  16. open3d,读取stl/ply/obj/off/gltf/glb三维模型,并转换成点云,保存
  17. Dell戴尔笔记本电脑G3 3579原装出厂Windows10系统恢复原厂oem系统
  18. Charles抓包遇到Not allowed POST https://xxxxxxxxxxx/xxxxxxxxxx connection dropped
  19. cobol text文件的入出力
  20. linux xhci源码,第四十六篇:Linux中的USB XHCI HOST TRANSFER RING的相关数据结构 (1)

热门文章

  1. c#程序设计实训报告心得体会_C#程序实际实训总结
  2. ES7、ES8、ES9、ES10新特性大盘点
  3. EOS系列 - WASM智能合约 - 特性
  4. 2021年全球及中国集成电路销售及趋势分析
  5. 【RL-TCPnet网络教程】第30章 RL-TCPnet之SNTP网络时间获取
  6. 【统计学习方法】朴素贝叶斯
  7. Linux 打包压缩-文件打包-打包工具【tar】命令使用简介
  8. EasyExcel之回填下拉框
  9. 26、用户 创建用户
  10. android手机病毒原理,安卓手机病毒的原理是什么