目录

  • 1.慢查询的用途
  • 2.查看是否开启慢查询
  • 3.开启慢查询(需要的时候才开启,因为很耗性能,建议使用即时性的)
    • 方式一:(即时性的,重启mysql之后失效,常用的)
    • 方式二:(永久性的)
  • 4.设置慢查询记录的时间
  • 5.执行select count(1) from order o where o.user_id in (select u.id where users);
  • 6.查询慢查询的次数:show status like 'slow_queries';
  • 7.慢查询日志分析工具Mysqldumpslow
  • 8.show profile

1.慢查询的用途

它能记录下所有执行超过long_query_time时间的SQL语句,帮我们找到执行慢的SQL,方便我们对这些SQL进行优化。

2.查看是否开启慢查询

show variables like 'slow_query%';


slow_query_log = off,表示没有开启慢查询
slow_query_log_file 表示慢查询日志存放的目录

3.开启慢查询(需要的时候才开启,因为很耗性能,建议使用即时性的)

方式一:(即时性的,重启mysql之后失效,常用的)
set global slow_query_log=1;

或者

set global slow_query_log=ON;

开启之后 我们会发现 /var/lib/mysql下已经存在 localhost-slow.log了,未开启的时候默认是不存在的。

方式二:(永久性的)

在/etc/my.cfg文件中的[mysqld]中加入:

slow_query_log=ON
slow_query_log_file=/var/lib/mysql/localhost-slow.log

4.设置慢查询记录的时间

查询慢查询记录的时间:show variables like ‘long_query%’,默认是10秒钟,意思是大于10秒才算慢查询。

我们现在设置慢查询记录时间为1秒:

set long_query_time=1;

5.执行select count(1) from order o where o.user_id in (select u.id where users);

因为我们开启了慢查询,且设置了超过1秒钟的就为慢查询,此sql执行了24秒,所以属于慢查询。
我们在日志中查看:

more /var/lib/mysql/localhost-slow.log

我们可以看到查询的时间,用户,花费的时间,使用的数据库,执行的sql语句等信息。在生产上我们就可以使用这种方式来查看 执行慢的sql。

6.查询慢查询的次数:show status like ‘slow_queries’;


在我们重新执行刚刚的查询sql后,查询慢查询的次数会变为8

当然,用 more /var/lib/mysql/localhost-slow.log 也是可以看到详细结果的。
在生产中,我们会分析查询频率高的,且是慢查询的sql,并不是每一条查询慢的sql都需要分析。

7.慢查询日志分析工具Mysqldumpslow

由于在生产上会有很多慢查询,所以采用上述的方法查看慢查询sql会很麻烦,还好MySQL提供了慢查询日志分析工具Mysqldumpslow。
其功能是, 统计不同慢sql的出现次数(Count),执行最长时间(Time),累计总耗费时间(Time),等待锁的时间(Lock),发送给客户端的行总数(Rows),扫描的行总数(Rows)
(1)查询Mysqldumpslow的帮助信息,随便进入一个文件夹下,执行:mysqldumpslow --help
查看mysqldumpslow命令安装在哪个目录:

whereis mysqldumpslow


说明:

  • -s,是order的顺序,主要有c(按query次数排序)、t(按查询时间排序)、l(按lock的时间排序)、r (按返回的记录数排序)和 at、al、ar,前面加了a的代表平均数
  • -t,是top n的意思,即为返回前面多少条的数据
  • -g,后边可以写一个正则匹配模式,大小写不敏感的
  • -r:倒序

(2)案例:取出耗时最长的两条sql
格式:mysqldumpslow -s t -t 2 慢日志文件

mysqldumpslow -s t -t 2 /var/lib/mysql/localhost-slow.log


参数分析:

  • 出现次数(Count),
  • 执行最长时间(Time),
  • 累计总耗费时间(Time),
  • 等待锁的时间(Lock),
  • 发送给客户端的行总数(Rows),
  • 扫描的行总数(Rows),
  • 用户以及sql语句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).

(3)案例:取出查询次数最多,且使用了in关键字的1条sql

mysqldumpslow -s c -t 1 -g 'in' /var/lib/mysql/localhost-slow.log


这种方式更加方便,更加快捷!

8.show profile

用途:用于分析当前会话中语句执行的资源消耗情况
(1)查看是否开启profile,mysql默认是不开启的,因为开启很耗性能

show variables like 'profiling%';


(2)开启profile(会话级别的,关闭当前会话就会恢复原来的关闭状态)

set profiling=1;

或者

set profiling=ON;

(3)关闭profile

set profiling=0;

或者

set profiling=OFF;

(4)显示当前执行的语句和时间

show profiles;


(5)显示当前查询语句执行的时间和系统资源消耗

show profile cpu,block io for query 4;

(分析show profiles中query_id等于4的sql所占的CPU资源和IO操作)
或者直接 :

show profile for  query 4;


原文链接

MySQL性能优化(七)-- 慢查询相关推荐

  1. MySQL性能优化(七):其它优化

    一:数据库配置优化 mysql是一个高度定制化的数据库系统,提供了很多配置参数,一般都需要根据应用程序的特性和硬件情况对mysql做配置优化,windows配置文件为my.ini,linux为my.c ...

  2. Mysql性能优化方案

    2019独角兽企业重金招聘Python工程师标准>>> 内容简介:这是一篇关于mysql 性能优化的文章.网上有不少mysql 性能优化方案,不过,mysql的优化同sql serv ...

  3. MySQL 性能优化,优化设计及设计原则解读

    MySQL性能优化的目的 如何合理的设计数据库? 什么样的数据库设计才能给后期DBA优化提供基石? 数据库设计与程序设计的差异? 数据库设计早期优化 1. 关系明确(理清表之间的关系,可以通过冗余的方 ...

  4. MySQL 性能优化技巧

    原文地址:MySQL 性能优化技巧 博客地址:www.extlight.com 一.背景 最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久.原因是新功能用到旧功能的接口,而这些旧接口的 S ...

  5. MySQL性能优化点记录

    第一章 myisam,可以基于blob和text的前500字节,创建索引 myisam 支持fulltext 延迟更新索引 (delay_key_write) CREATE TABLE `table3 ...

  6. Mysql 性能优化——必胜之道

    mysql的性能优化是运维和DBA们常常面对的问题,也是各大公司招聘人才时看中的要点之一.性能优化听上去很难,似乎只有大神才能做,然而,mysql的性能优化绝不是运维独自一个能完成的,DBA.开发.架 ...

  7. mysql 性能优化方案

    网 上有不少mysql 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果 ...

  8. mysql半连接_mysql表的半连接,反连接导致的mysql性能优化剖析

    [导读] 关于Oracle的半连接,反连接,我一直认为这是一个能讲很长时间的话题,所以在我的新书<Oracle DBA工作笔记>中讲性能优化的时候,我花... 关于Oracle的半连接,反 ...

  9. 记一次mysql性能优化过程

    2019独角兽企业重金招聘Python工程师标准>>> 转发自:记一次mysql性能优化过程 由于配置是运行过那么长时间,很稳定,基本上不考虑,所以本次主要是sql的优化,并且集中在 ...

  10. MySQL性能优化速记

    MySQL性能优化速记http://www.bieryun.com/3064.html 总结自<MySQL 5.7从入门到精通(视频教学版)>刘增杰编著. 优化简介 MySQL数据库优化是 ...

最新文章

  1. activemq - 浅析消息确认模式
  2. vnc用户名 查看linux_linux 查看vnc服务器
  3. 太强了!Scikit-learn 0.22新版本发布,新功能更加方便
  4. 【数据结构与算法】之深入解析“合并两个有序链表”的求解思路与算法示例
  5. VS2015中DataGridView的DataGridViewComBoboxCell列值无效及数据绑定错误的解决方法
  6. c语言sigaction,使用sigaction(),c
  7. java动脑公开课_java课堂动手动脑
  8. fluent design_Fluent Design单选按钮,复选框,选择框,Java菜单
  9. python request 留位置4
  10. Python--day26--复习
  11. vue 设置全局变量、指定请求的 baseurl
  12. 递归遍历文件及子文件夹下的文件(该代码是复制过来修改过的,如果有侵作者权的话,请作者联系我,立即删除)...
  13. YOLODet最新算法的目标检测开发套件,优化到部署
  14. sql注入------基于时间延迟benchmark函数注入脚本
  15. lzw编码过程详解_【手打】LZW编码的C/C++实现
  16. 平板电脑黑苹果EFI_保姆级别教你安装黑苹果,提供大量EFI与工具驱动!
  17. Java二叉树的最大深度
  18. 解决移动浏览器不能正确转化时间
  19. 130个实用网站集合
  20. DottedDict-提供一种使用点路径符号访问列表和字典方法的python库

热门文章

  1. java的课后作业咋写_写的简单的java第三季的课后作业
  2. python求函数一二阶导_python:利用多种方式解微分方程(以二阶微分系统零状态响应为例)...
  3. qt和python关系_Python与Qt - AlphaJay的个人空间 - OSCHINA - 中文开源技术交流社区
  4. 产业研发用房是什么意思_新型产业用地(M0)之政策分享篇
  5. linux procfs文件系统(2)
  6. python正则匹配表达式(2)
  7. 201312-1 出现次数最多的数
  8. linux 串口 vmin vtime ,Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用
  9. python实现两个文件夹中同名文件转移
  10. phpcmsV9站群去除域名绑定目录中的HTML的方法