mysql 慢查询_数据库查询慢

mysql 慢查询_数据库查询慢慢查询日志默认不开启,建议手动开启,方便我们定位线上问题。
执行时间超过阈值的SQL会被写入到慢查询日志当中,这样可以帮助我们记录执行时间过长的SQL语句,定位线上慢SQL问题,方便我们进行SQL性能

手把手教你定位线上MySQL慢查询问题,包教包会

1. 慢查询日志的作用

慢查询日志默认不开启,建议手动开启,方便我们定位线上问题。

执行时间超过阈值的SQL会被写入到慢查询日志当中,这样可以帮助我们记录执行时间过长的SQL语句,定位线上慢SQL问题,方便我们进行SQL性能调优。

2. 慢查询日志的配置

2.1 查看是否开启了慢查询日志

show variables like "slow_query_log";

image

默认是OFF,不开启,可以手动开启。

2.2 开启慢查询日志

一种方法是可以使用MySQL命令开启:

set global slow_query_log=1;

image

另一种方法是修改MySQL配置文件,重新MySQL服务后,开启。

修改配置文件my.cnf,加入下面一行命令

slow_query_log = ON

2.3 设置慢查询日志的阈值

慢查询日志的阈值默认是10,单位是秒。

对于线上服务来说,10秒太长了,我们可以手动修改。

image

一种是通过MySQL命令修改,比如修改为1秒:

set long_query_time=1;

image

另一种方法是修改MySQL配置文件,重新MySQL服务后,开启。

修改配置文件my.cnf,加入下面一行命令

long_query_time = 1

2.4 修改慢查询日志位置

使用MySQL命令查看慢查询日志位置:

show variables like "%slow_query_log_file%";

image

想要修改慢查询日志位置,可以修改MySQL配置文件,重新MySQL服务后,开启。

修改配置文件my.cnf,加入下面一行命令

slow_query_log_file = /usr/local/mysql/data/localhost_slow.log

2.5 记录更多慢查询SQL

默认情况下管理语句是不会被记录到慢查询日志中,管理语句包括ALTER TABLE、 ANALYZE TABLE、 CHECK TABLE、 CREATE INDEX、 DROP INDEX、 OPTIMIZE TABLE和 REPAIR TABLE等。

image

管理语句也是非常重要的,如果想要被记录,可以通过MySQL命令修改:

set global log_slow_admin_statements=ON;

image

默认情况下,不使用索引的语句,也是不会被记录的。

够坑人吧!一不留神就掉坑里了,不记录不使用索引的语句,还要慢查询日志干嘛?

image

想要记录不使用索引的语句,可以通过命令修改:

set global log_queries_not_using_indexes=ON;

image

3. 慢查询日志的使用

手动造一条慢SQL,测试一下效果,user表中有100万表数据:

select * from user;

然后看一下慢查询日志文件的内容:

cat /usr/local/mysql/data/localhost_slow.log

image

SQL语句和执行时间都被记录了。

4. 分析慢查询日志

有时候慢查询日志较多,手动查看起来并不是很方便,好在MySQL提供了分析慢查询日志的工具mysqldumpslow

常用参数有

-s: 表示按何种方式排序:
  c: 访问次数
  l: 锁定时间
  r: 返回记录
  t: 查询时间
  al: 平均锁定时间
  ar: 平均返回记录数
  at: 平均查询时间
-t: 返回前面多少条的数据;

4.1 查询返回结果最多的10条SQL:

mysqldumpslow -s r -t 10 /usr/local/mysql/data/localhost_slow.log

image

4.2 查询耗时最长的10条SQL:

mysqldumpslow -s t -t 10 /usr/local/mysql/data/localhost_slow.log

image

文章持续更新,可以微信搜一搜「 一灯架构 」第一时间阅读更多技术干货。

原文地址:https://www.cnblogs.com/yidengjiagou/archive/2022/08/05/16553559.html

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

(0)
上一篇 2023-05-30
下一篇 2023-05-30

相关推荐

  • Mysql用法记录

    Mysql用法记录1、查询某个字段,在数据库不重复的条数(去重查询) select count(distinct item_uid) from supply_order; 查询 表 supply_order 中 it…

    2023-02-01
    146
  • 技术分享 | 使用 systemd 修改资源隔离配置

    技术分享 | 使用 systemd 修改资源隔离配置作者:晏泽 爱可生售后团队成员,主要负责公司数据库运维产品问题诊断;努力在数据库和 IT 领域里摸爬滚打中。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并…

    2023-03-25
    155
  • Python中的字母操作

    Python中的字母操作Python是一种广泛使用的编程语言。在实际项目中,经常需要处理文本数据,而文本数据中最常见的就是字母。Python提供了丰富的字母操作函数,方便开发者对文本数据进行处理和操作。本文将介绍Python中常用的字母操作,包括大小写转换、排序等。

    2024-04-05
    68
  • MVC三层架构「建议收藏」

    MVC三层架构「建议收藏」一、MVC和三层架构 什么是MVC? (1) MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是一种软件设计模式

    2023-02-06
    147
  • 数据库发展史(上)

    数据库发展史(上)数据库技术是信息技术领域的核心技术之一,几乎所有的信息系统都需要使用数据库系统来组织、存储、操纵和管理业务数据。数据库领域也是现代计算机学科的重要分支和研究方向。目前,在数据库领域已经产生了四位图灵…

    2023-04-12
    159
  • 用JavaScript find方法寻找数组中的匹配项

    用JavaScript find方法寻找数组中的匹配项JavaScript Array的find方法可以被用来寻找数组中的匹配项。在实际开发中,我们通常需要根据某些条件来查找数组中的元素,find方法正好能帮助我们轻松实现这个任务。下面介绍如何使用find方法来查找数组中的元素。

    2024-08-30
    23
  • Python脚本编写原始标题

    Python脚本编写原始标题Python是一门十分强大的编程语言,在众多开发领域都有广泛的应用。其中,Python脚本编写是开发中的常见需求,将代码逻辑组织成脚本可以让开发人员高效地完成某些自动化任务。Python脚本编写原始标题是Python脚本编写过程中不可避免的一部分,因为这可以帮助开发者更好地组织代码文件。

    2024-05-11
    74
  • 【数据库汇总】[通俗易懂]

    【数据库汇总】[通俗易懂]MySQL 2020.4.30–

    2023-02-23
    151

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注