首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >mysql慢查询sql统计_mysql服务启动慢

mysql慢查询sql统计_mysql服务启动慢

作者头像
全栈程序员站长
发布于 2022-11-04 08:44:30
发布于 2022-11-04 08:44:30
3.7K0
举报

一、概述

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。

二、慢查询日志设置

1、临时设置

临时开启慢查询日志(重启失效)

set global slow_query_log = on;

注:如果想关闭慢查询日志,只需要执行 set global slow_query_log = off; 即可。

临时慢查询时间临界点 查询时间高于这个临界点的都会被记录到慢查询日志中(重启失效)

set long_query_time = 1;

设置慢查询存储的方式(重启失效)

set global log_output = file;

说明: 可以看到,我这里设置为了file,就是说我的慢查询日志是通过file体现的,默认是none,我们可以设置为table或者file,如果是table则慢查询信息会保存到mysql库下的slow_log表中。

2、查询慢查询日志的开启状态和慢查询日志储存的位置

show variables like ‘%quer%’;

参数说明:

slow_query_log : 是否已经开启慢查询

slow_query_log_file : 慢查询日志文件路径

long_query_time : 超过多少秒的查询就写入日志

log_queries_not_using_indexes 如果值设置为ON,则会记录所有没有利用索引的查询(性能优化时开启此项,平时不要开启)

3、查看存放日志的形式

show variables like ‘log_output’;

4、永久开启慢日志

修改my.cnf

在配置文件my.cnf(一般为/etc/my.cnf)中的[mysqld] section增加如下参数。

[mysqld]slow_query_log= 1slow_query_log_file= /var/lib/mysql/slow-query.log # 若没有指定,默认名字为hostname_slow.loglong_query_time= 1log_queries_not_using_indexes= 1

其中,

slow_query_log = 1

表示开启慢查询,0表示关闭

slow_query_log_file

指定慢查询日志路径

需要MySQL对该路径有写权限

long_query_time = 1

表示查询时间>=1秒才记录日志

默认10s

log_queries_not_using_indexes = 1

表明记录没有使用索引的 SQL 语句

重启MySQL服务

重启MySQL后会看到/var/lib/mysql/slow-query.log文件。

三、慢查询测试

制造慢查询并执行。如下。

mysql> select sleep(1);+———-+

| sleep(1) |

+———-+

| 0 |

+———-+

1 row in set (1.00 sec)

慢查询日志

打开慢查询日志文件。可以看到上述慢查询的SQL语句被记录到日志中。

四、慢查询分析工具

mysqldumpslow

mysqldumpslow是MySQL自带的分析慢查询的工具。该工具是Perl脚本。

常用参数如下

-s:排序方式,值如下

c:查询次数

t:查询时间

l:锁定时间

r:返回记录

ac:平均查询次数

al:平均锁定时间

ar:平均返回记录书

at:平均查询时间-t:topN查询-g:正则表达式

获取访问次数最多的5个SQL语句

按照时间排的top 5个SQL语句

$ mysqldumpslow -s t -t 5 /var/lib/mysql/slow-query.log

按照时间排序且含有’like’的top 5个SQL语句

$ mysqldumpslow -s t -t 3 -g “like” /var/lib/mysql/slow-query.log

五、MySQL 清理slowlog方法

SET GLOBAL slow_query_log = ‘OFF’;ALTER TABLEmysql.slow_log RENAME mysql.slow_log_drop;CREATE TABLE mysql.slow_log LIKEmysql.slow_log_drop;SET GLOBAL slow_query_log = ‘ON’;DROP TABLE mysql.slow_log_drop;

六、小结

默认情况下,MySQL不启动慢查询日志。若要检查慢查询,需要我们手动设置这个参数。一般情况下,若非调优需要,不建议启动该参数,因为开启慢查询日志或多或少会带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181996.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月14日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL慢查询日志分析详解[通俗易懂]
分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。
全栈程序员站长
2022/11/08
1.6K0
开启MYSQL慢查询日志,监控有效率问题的SQL景下的并发测试
一、操作步骤 1. 首先使用用户登录linux客户端,执行命令 mysql -u mjb -p, mjb是数据库用户名,系统会提示输入密码,输入密码回车,登录成功 2. 输入命令show variab
jmeter技术研究
2019/10/19
7520
开启MYSQL慢查询日志,监控有效率问题的SQL景下的并发测试
听说你还不会看MySQL慢查询日志?
MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志。
Bug开发工程师
2018/12/17
5110
MySQL慢查询日志详解
1.慢查询日志概念(也叫慢日志):在 MySQL 中执行时间超过指定时间的 SQL 语句
全栈程序员站长
2022/11/07
7580
MySQL慢查询日志详解
快速学会慢查询SQL排查
学完数据库基础知识,要想更深入地了解数据库,就需要学习数据库进阶知识,今天我们就先来聊一聊慢SQL查询那些事儿。
测试蔡坨坨
2022/12/21
8690
快速学会慢查询SQL排查
Mysql慢查询操作梳理
Mysql慢查询解释 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入
洗尽了浮华
2018/01/23
1.5K0
MySQL慢查询及解决方案
对于生产业务系统来说,慢查询也是一种故障和风险,一旦出现故障将会造成系统不可用影响到生产业务。当有大量慢查询并且SQL执行得越慢,消耗的CPU资源或IO资源也会越大,因此,要解决和避免这类故障,关注慢查询本身是关键。
程序大视界
2022/09/22
9920
MySQL慢查询及解决方案
你的哪些SQL慢?看看MySQL慢查询日志吧
在项目里面,多多少少都隐藏着一些执行比较慢的SQL, 不同的开发测试人员在平时使用的过程中多多少少都能够遇到,但是无法立马有时间去排查解决。那么如果有一个文件能够将这些使用过程中比较慢的SQL记录下来,定期去分析排查,那该多美好啊。这种情况MySQL也替我们想到了,它提供了SQL慢查询的日志,本文就分享下如何使用吧。
闻说社
2023/02/22
7000
Mysql慢查询日志的使用 和 Mysql的优化
1、临时开启慢查询日志(如果需要长时间开启,则需要更改mysql配置文件,第6点有介绍)
lyb-geek
2018/11/08
1.2K0
如何开启MySQL慢查询日志
摘要: 前言 数据库日志记录了用户对数据库的各种操作及数据库发生的各种事件。能帮助数据库管理员追踪、分析问题。MySQL提供了错误日志、二进制日志、查询日志、慢查询日志。 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。
全栈程序员站长
2022/11/07
1.5K0
Mysql慢查询配置
查看系统慢sql是否开启 //慢查询时间阈值 > show variables like '%long_query_time%'; //查看慢查询配置情况 > show status like '%slow_queries%'; // 查看慢日志路径 > show variables like '%slow%'; 开启慢日志 > set global slow_query_log=On; > set global long_query_time=1; //设置查看时间超过1秒的查询被记录到日志 > s
入门笔记
2022/06/02
3870
mysql 慢查询,你操作的对吗?
MySQL 慢查询,全称 慢查询日志 ,它是 MySQL 提供的一种日志记录,用了记录在 MySQL 中响应时间超过阈值的语句。
八点半的Bruce、D
2020/06/09
8110
什么是慢查询日志?它有什么作用?
慢查询日志是MySQL数据库的一个特殊的日志文件,记录了执行时间超过一定阈值的SQL语句和相关的信息。
用户4511776
2023/05/19
1.3K0
图文结合带你搞懂MySQL日志之Slow Query Log(慢查询日志)
MySQL 的慢查询日志,用来记录在 MySQL 中响应时间超过阀值的语句,具体指运行时间超过 long_query_time 值的SQL,则会被记录到慢查询日志中。long_query_time 的默认值为10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。
GreatSQL社区
2023/02/22
4.3K0
MySQL数据库或日志中时间差8个小时的解决方式及慢查询配置
果您需要在全局范围内修改默认时区,需要在MySQL的配置文件my.cnf中添加以下行:
码客说
2023/09/26
2.5K0
MySQL数据库或日志中时间差8个小时的解决方式及慢查询配置
MySQL 慢查询日志(Slow Query Log)
    同大多数关系型数据库一样,日志文件是MySQL数据库的重要组成部分。MySQL有几种不同的日志文件,通常包括错误日志文件,二进制日志,通用日志,慢查询日志,等等。这些日志可以帮助我们定位mysqld内部发生的事件,数据库性能故障,记录数据的变更历史,用户恢复数据库等等。本文主要描述通用查询日志。
Leshami
2018/08/13
1.7K0
Mysql慢查询_mysql并发查询慢
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表。
全栈程序员站长
2022/11/07
20K0
Mysql慢查询_mysql并发查询慢
后端开发必备的 MySQL 日志文件知识点
日志文件记录了影响MySQL数据库的各种类型活动,MySQL数据库中常见的日志文件有错误日志,二进制日志,慢查询日志和查询日志。下面分别对他们进行介绍。
挨踢小子部落阁
2019/09/27
6140
MySQL慢查询日志
概念 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。 long_query_time的默认值为10,意思是运行10S以上的语句。 Mysql数据库默认情况下并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。 慢查询日志支持将日志记录写入文件,也支持将日志记录写入数据库表
用户8639654
2021/08/23
1.4K0
MySQL慢查询日志总结
MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过longquerytime值的SQL,则会被记录到慢查询日志中。longquerytime的默认值为10,意思是运行10S以上的语句。
lyb-geek
2018/12/28
2.1K0
MySQL慢查询日志总结
相关推荐
MySQL慢查询日志分析详解[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档