文章目录

  • 生猛干货
  • 官方文档
  • 使用慢查询获取慢SQL
    • 慢查询的相关参数
      • slow_query_log 是否开启了慢查询
        • 开启慢查询
      • slow_query_log_file 指定慢查询日志的存储路径及文件
      • long_query_time 指定记录慢查询日志SQL执行时间的阈值
      • log_queries_not_using_indexes 是否记录未使用索引的SQL
    • 慢查询日志的分析工具
      • mysqldumpslow 官方
      • pt-query-digest
  • 实时获取
    • 查询 information_schema.processlist
  • 搞定MySQL

生猛干货

带你搞定MySQL实战,轻松对应海量业务处理及高并发需求,从容应对大场面试


官方文档

https://dev.mysql.com/doc/

如果英文不好的话,可以参考 searchdoc 翻译的中文版本

http://www.searchdoc.cn/rdbms/mysql/dev.mysql.com/doc/refman/5.7/en/index.com.coder114.cn.html


使用慢查询获取慢SQL

慢查询的相关参数

slow_query_log 是否开启了慢查询

默认关闭

mysql> show variables like  'slow_query_log';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | OFF   |
+----------------+-------+
1 row in set (0.00 sec)mysql> 

因为记录慢查询比较占用磁盘空间,可以通过脚本关闭慢查询,比如一个小时以后关闭慢查询等等。

开启慢查询

开启的话,可以通过 set global 来动态修改。

mysql> set global slow_query_log=on;   # 开启慢查询
Query OK, 0 rows affected (0.04 sec)mysql> show variables like 'slow_query_log';
+----------------+-------+
| Variable_name  | Value |
+----------------+-------+
| slow_query_log | ON    |
+----------------+-------+
1 row in set (0.01 sec)mysql> 

slow_query_log_file 指定慢查询日志的存储路径及文件

默认存储在MySQL的数据目录中,建议日志文件和数据文件分开存储。

mysql> show variables like 'slow_query_log_file';
+---------------------+---------------------------------+
| Variable_name       | Value                           |
+---------------------+---------------------------------+
| slow_query_log_file | /var/lib/mysql/artisan-slow.log |
+---------------------+---------------------------------+
1 row in set (0.01 sec)

long_query_time 指定记录慢查询日志SQL执行时间的阈值

单位为秒 。 默认10秒。

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.02 sec)

log_queries_not_using_indexes 是否记录未使用索引的SQL

mysql> show variables like 'log_queries_not_using_indexes';
+-------------------------------+-------+
| Variable_name                 | Value |
+-------------------------------+-------+
| log_queries_not_using_indexes | OFF   |
+-------------------------------+-------+
1 row in set (0.00 sec)mysql> 

慢查询日志的分析工具

慢日志涨这个样子:

如何分析呢? 因为慢查询日志比较大,靠肉眼很难分析,所以需要依赖第三方工具

mysqldumpslow 官方

mysqldumpslow可以汇总除查询条件外其他完全相同的SQL,并将分析结果按照参数中所指定的顺序输出。

用法 :

mysqldumpslow -s r -t 10 slow-mysql.log

参数说明:

  • -s order (c , t , l ,r , at ,al ,ar) 指定按照那种排序方式输出结果

    c: 总次数
    t: 总时间
    l: 锁的时间
    r:种数据行

    at 、 al、ar : t l r 平均数, 比如 at = 总时间/总次数

  • -t top 指定取前几条作为结果输出。


pt-query-digest

第三方的工具,

用法如下:

pt-query-digest \
--explain h=ip.1,u=用户,p=密码\
slow-mysql.log  

这个工具生成的慢查询分析日志 更详细。 建议用这个

主从架构下, 建议在从节点执行 。


实时获取

查询 information_schema.processlist

SELECTid,`USER`,`HOST`,db,COMMAND,TIME,state,INFO
FROMinformation_schema.`PROCESSLIST` a
WHEREa.TIME > 60

搞定MySQL

MySQL-获取有性能问题SQL的方法_慢查询 实时获取相关推荐

  1. mysql执行计划性能_MySQL SQL性能分析Explain执行计划

    一. 执行计划返回信息详解 ①. 执行计划所含字段 输出列含义id查询标识 select_type查询类型 table查询涉及的表 partitions匹配到的分区信息 type连接类型 possib ...

  2. python实时获取子进程输出_Python 从subprocess运行的子进程中实时获取输出的例子...

    有些时候,我们需要将某些程序放到子进程中去运行,以达到整合系统的目的.在Python中,一个非常好的选择就是使用subprocess模块,本模块为开辟子进程去执行子程序提供了统一的接口,更加便于学习和 ...

  3. 优化MySQL的数据库性能的八种方法

    1.选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快.因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽 ...

  4. mysql能用case嵌套sql吗,关于sqlserver中查询语句中嵌套case语句使用方法

    ryxxlong的博客 Sql server 中的 CASE 语句文章, 链接 http://ryxxlong.iteye.com/blog/531221 写的比较详细,具体内容如下,主要用于自己以后 ...

  5. java开发中推荐的防御sql注入方法_不推荐的防御sql注入方式

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  6. mysql子查一般分为几种方法_解说词根据被解释的对象可分为____两种。

    [单选题]安装 MySQL时默认端口号是: [单选题]能够保障实体完整性的是: [单选题]悉德 菲尔德的______中总结了大量关于剧本写作的经验与技巧. [多选题]研究遗传因素的方法有 [资料题]第 ...

  7. java获取系统时间的几种方法_获取当前时间的几种方法整理(Java)

    在java中有很多方法可以取到系统时间,记一下最简单的那种 //使用Calendar 获取当前日期和时间 Calendar calendar = Calendar.getInstance(); // ...

  8. java开发中推荐的防御sql注入方法_防御SQL注入的方法总结

    SQL 注入是一类危害极大的攻击形式.虽然危害很大,但是防御却远远没有XSS那么困难. SQL 注入漏洞存在的原因,就是拼接 SQL 参数.也就是将用于输入的查询参数,直接拼接在 SQL 语句中,导致 ...

  9. MySQL数据库-笔记06【SQL的4种连接查询、事务】

    学习地址:一天学会 MySQL 数据库      MySQL安装教程      MySQL专栏

最新文章

  1. Python机器学习——线性模型
  2. php 进行http请求,PHP模拟http请求的方法详解
  3. 当我的生活只剩下写代码时
  4. activity绑定service
  5. ros 发布信息频率_ROS入门笔记二基础
  6. [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
  7. 待更新内容mongodb
  8. 【数据结构与算法C语言版】基础代码整理 思维导图
  9. mysql新闻管理系统表_《新闻管理系统》数据库设计_参考答案.doc
  10. nextjs中阿里icon库的引入使用
  11. eclipse安装超帅主题----darkest dark
  12. 计算机c盘要满了电脑会卡吗,电脑卡就一定是C盘装太满吗?
  13. 2015秋季腾讯【技术运营】岗位———在线笔试总结
  14. 十字路口通行优先权,十字路口通行规则图解
  15. iOS开发常用国外网站清单
  16. vue+ElementUI实现后台管理系统(二)
  17. Flex: flash特效原理:标签云
  18. Ubisoft Connect失去连接解决办法
  19. 魔百和M301H/UNT401H/402H/烽火HG680ka-海思MV300H/310芯片免拆卡刷固件
  20. 明月三千里 mysql_Mysql 明月三千里 (一)

热门文章

  1. 给hbase增加协处理器报ERROR: org.apache.hadoop.hbase.DoNotRetryIOException:错误
  2. flask的同一ip域名不同端口的两个网站session冲突
  3. C++用顶层函数重载操作符(三)用友元优化
  4. python 将txt 表格转化为excel
  5. java post 打开新页面_JAVA后台POST/GET访问方法
  6. mac电脑开机出现客人用户,没有输入密码框,其他键都点不动,重启也不好使
  7. 文巾解题 206. 反转链表
  8. 【数据可视化应用】绘制峰峦地图(附Python和R语言代码)
  9. 使用PCA对特征数据进行降维
  10. 关于安装torch、torchvision包的问题