mysql进阶-查询优化-慢查询日志

文章目录

  • 一、什么是慢查询日志
  • 二、慢查询日志能干什么
    • 2.1 性能分析和优化
    • 2.2 诊断和排查问题
    • 2.3 数据分析和探索
  • 三、慢查询日志实战
    • 3.1 永久开启开启慢查询日志
    • 3.2 临时开启慢查询日志
    • 3.4 常用命令
  • 四、如何分析慢查询日志
  • 五、优化慢查询语句
  • 五、总结

一、什么是慢查询日志

日志对一个程序来说非常重要,他能帮助程序员在系统出现问题时快速定位问题,慢查询日志slow query log)是MySQL自带的几种日志文件中非常重要的一种日志(另还有错误日志、查询日志、二进制日志)。MySQL的慢查询日志是用于记录执行时间超过指定阈值的SQL查询语句的一种机制。这个阈值由MySQL的参数long_query_time 指定,默认值为10秒。当一个查询的执行时间超过这个阈值时,MySQL就会将这个查询的详细信息记录到慢查询日志中,以供进一步分析和优化使用。慢查询日志可以帮助开发人员和管理员发现查询缓慢或性能低下的SQL查询,以及找出相关的问题和瓶颈。下面将详细介绍MySQL慢查询日志的作用、用途和使用方法。

二、慢查询日志能干什么

2.1 性能分析和优化

慢查询日志可以帮助开发人员和管理员找出执行缓慢或性能低下的SQL查询,从而进行进一步的优化和调整。通过读取日志文件,可以获取SQL查询的具体执行时间和执行次数,以及相应的服务器资源占用情况和响应时间等指标,从而确定查询语句的瓶颈和性能问题所在,并根据实际执行计划进行优化,以提高查询性能和执行效率。

2.2 诊断和排查问题

慢查询日志可以用于诊断和排查数据库中的各种问题和异常。例如,可以通过查询日志文件,找出导致数据库响应时间延长的查询语句、语法错误、索引缺失等问题,并针对性地进行解决和优化,从而提高数据库的可用性和稳定性。

2.3 数据分析和探索

慢查询日志可以作为数据库性能的一种指标进行分析和探索。通过对日志文件的分析,可以研究数据库操作的历史记录、访问模式、查询分布等重要特征,从而深入了解数据库的运行状况和性能瓶颈,帮助开发人员和管理员进行针对性的优化和调整,以提升数据库的性能和可靠性。

三、慢查询日志实战

3.1 永久开启开启慢查询日志

要开启MySQL慢查询日志,需要修改MySQL服务器的配置文件my.cnf(my.ini),
mysql的配置文件路径:

  • linux路径
/etc/mysql/my.cnf
  • windows路径 5.7 是版本号
C:\ProgramData\MySQL\MySQL Server 5.7/my.ini

也可以通过命令行的形式进行查询目录:

show variables like '%slow_query_log%'; 

在这里插入图片描述
在这里插入图片描述

并添加如下配置信息, 如果路径不存在一定要手动创建,否者可能会因为权限不够,无法记录慢查询日志。

# 开启慢查询日志
slow_query_log = 1 

# 指定慢查询的阈值,默认为10秒
long_query_time = 10 

# 指定慢查询日志的保存位置
slow_query_log_file = /var/log/mysql/mysql-slow.log

其中,slow_query_log为开启慢查询日志的开关,1为开启,0为关闭。long_query_time为慢查询的阈值时间,单位为秒,默认情况下为10秒。最后,slow_query_log_file为慢查询日志文件的保存位置,也可以指定文件名。

完成配置后,需要重启MySQL服务器才能使配置生效。

3.2 临时开启慢查询日志

我们也可以在命令行,或者Navicat 中执行如下命令开启慢查询日志:

SET GLOBAL slow_query_log = 1;
SET GLOBAL slow_query_log_file = '/mysql-slow.log';
SET GLOBAL long_query_time = 10;
SET GLOBAL log_output = 'FILE';

  • 优点:不需要重启mysql,不区分系统,简单方便
  • 缺点:重启mysql配置就失效了。

3.4 常用命令

# 查看慢查询日志的完整路径和文件名
show variables like 'slow_query_log_file'; 

# 查看当前MySQL服务器的慢查询日志是否开启
show variables like 'slow_query_log';

# 查询慢查询的阈值
show variables like '%long_query_time%'; 

# 查询慢查询日志输出方式
show variables like '%log_output%'; 


四、如何分析慢查询日志

mysqldumpslow 工具是慢查询自带的分析慢查询工具,一般只要安装了mysql,就会有该工具。
完成语法如下:

Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]  -- 后跟参数以及log文件的绝对地址;

  -s            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

mysqldumpslow 命令 常见的分析和优化查询日志文件语句如下:

取出使用最多的10条慢查询

mysqldumpslow -s c -t 10 /var/log/mysql/mysql-slow.log 

取出查询时间最慢的3条慢查询

mysqldumpslow -s t -t 3 /var/log/mysql/mysql-slow.log  

得到按照时间排序的前10条里面含有左连接的查询语句

mysqldumpslow -s t -t 10 -g “left join/var/log/mysql/mysql-slow.log 

按照扫描行数最多的前10条语句

 mysqldumpslow -s r -t 10 -g 'left join' /var/log/mysql/mysql-slow.log  

按查询总时间排序,显示前10条查询信息

mysqldumpslow -s t -t 10 /var/log/mysql/mysql-slow.log 

查询次数排序,显示前20条查询信息

mysqldumpslow -s c -t 20 /var/log/mysql/mysql-slow.log 

其中,-s t 表示按查询总时间排序,-s c表示按查询次数排序,-t 10表示显示前10条查询信息。

widows下使用mysqldumpslow 可以参考:Windows下安装使用mysqldumpslow

五、优化慢查询语句

通过分析和统计MySQL慢查询日志文件,可以找出不同查询语句的执行时间和执行次数等指标,以便进一步优化和调整查询语句的性能和执行效率。优化的方法通常包括以下几个方面:

(1)添加或修改表索引,以提高查询速度。

(2)优化SQL查询语句,使用优化的SQL语句可以使查询性能得到提升。

(3)调整MySQL服务器参数,如增加缓存区大小、减少线程数等,以达到更好的性能优化效果。

(4)升级数据库版本,选择更高效的数据库版本可以对查询性能产生显著影响。

五、总结

MySQL慢查询日志是MySQL数据库优化和性能调整的重要工具之一,通过记录和分析执行缓慢的SQL查询语句,可以找出查询瓶颈和性能问题所在,并针对性地进行优化和调整。尽管慢查询日志会产生一定的系统负担和日志存储量,但是它对于开发人员和管理员来说确实是一种非常有价值的工具,可以大幅提高MySQL性能的稳定性和可靠性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/19251.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

观察者设计模式(Observer Design Pattern)[论点:概念、组成角色、相关图示、示例代码、框架中的运用、适用场景]

文章目录 概念组成角色相关图示示例代码框架中的运用适用场景 概念 观察者设计模式(Observer Design Pattern)是一种行为型设计模式,它定义了一种对象间的一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当…

SpringBoot 配置文件

前言: 本篇主要介绍两种配置文件格式,分别为properties与yml(yaml)。 需要注意的是: 两个配置文件从功能上来讲是可以同时存在的,但是企业中通常会规定使用某一种格式的配置文件。如果同一个配置出现在两种格式的配置文件中的话&a…

微波方向有哪些SCI期刊推荐? - 易智编译EaseEditing

微波方向的SCI期刊推荐包括: IEEE Transactions on Microwave Theory and Technology: 该期刊是电磁场与微波技术领域的著名期刊,被世界上许多研究机构和大学广泛引用。 IEEE Transactions on Antennas and Propagation: 该期刊…

English Learning - L3 作业打卡 Lesson1 Day5 2023.5.9 周二

English Learning - L3 作业打卡 Lesson1 Day5 2023.5.9 周二 引言🍉句1: Fast loud music is popular with many people .成分划分爆破语调 🍉句2: They may say the music is red hot, especially the kind called Dixieland jazz.成分划分爆破语调 &a…

AI孙燕姿项目实现

最近在b站刷到很多关于ai孙笑川唱的歌曲,加上最近大火的ai孙燕姿, 这下“冷门歌手”整成热门歌手了 于是写下一篇文章, 如何实现属于的ai歌手。 注意滥用ai,侵犯他人的名誉是要承担法律责任的 下面是一些所需的文件链接&#xff…

低代码信创开发核心技术(一):基于Vue.js的描述依赖渲染DDR实现模型驱动的组件

前言 随着数字化转型的不断发展,低代码开发平台已成为企业快速建立自己的应用程序的首选方案。然而,实现这样一个平台需要具备高效、灵活和可定制化的能力。这正是基于描述依赖渲染(Description dependency rendering)所实现的。…

C语言CRC-16 XMODEM格式校验函数

C语言CRC-16 XMODEM格式校验函数 CRC-16校验产生2个字节长度的数据校验码,通过计算得到的校验码和获得的校验码比较,用于验证获得的数据的正确性。基本的CRC-16校验算法实现,参考: C语言标准CRC-16校验函数。 不同应用规范通过对…

三分钟阿里云服务器u1通用算力型性能、使用限制及费用说明

阿里云服务器u1是通用算力型云服务器,CPU采用2.5 GHz主频的Intel(R) Xeon(R) Platinum处理器,通用算力型u1云服务器不适用于游戏和高频交易等需要极致性能的应用场景及对业务性能一致性有强诉求的应用场景(比如业务HA场景主备机需要性能一致)&#xff0c…

C/C++每日一练(20230512) 成绩打印、补齐数组、水仙花数

目录 1. 成绩打印 ※ 2. 按要求补齐数组 🌟🌟🌟 3. 水仙花数 ※ 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 成绩打印 一个班有10个同学&am…

隐语v0.8.2版本更新,首次发布TEEU

隐语v0.8.2版本更新🌟 应用层 机器学习: - MPC 纵向 LR (SSRegression)新增 Policy SGD 优化器和 Early Stopping 支持,减少调参成本,加快收敛速度; - WOE 分箱进行了若干优化,性…

本地搭建wamp服务器并内网穿透实现无公网IP远程访问

文章目录 前言1.Wamp服务器搭建1.1 Wamp下载和安装1.2 Wamp网页测试 2. Cpolar内网穿透的安装和注册2.1 本地网页发布2.2 Cpolar云端设置2.3 Cpolar本地设置 3. 公网访问测试4. 结语 转载自cpolar极点云的文章:无公网IP?教你在外远程访问本地Wamp服务器「…

前端CSS学习(三)

1、盒子模型 盒子的概念1、页面中的每一个标签,都可看做是一 个“盒子” ,通过盒子的视角更方便的进行布局2、浏览器在渲染 (显示)网页时,会将网页中的元素看做是一个个的矩形区域,我们也形象的称之为盒子CSS中规定每个盒子分别由…

Postman安装及入门接口测试使用步骤

前言 在软件测试行业中,作为一款比jemter更便捷更好用的软件测试工具,postman以其便捷灵活性首当其冲,成为当今测试行业领域使用较广泛的主流系统软件接口测试工具。今天Darren洋为大家讲解postman这款软件测试工具的下载安装及入门接口测试步…

Linux权限 - 概念与管理 | 文件权限的修改与转让 【详解】

目录 Linux权限 Linux权限的概念 Linux权限的基础操作 (1).实现用户账号的切换 (2).仅提升当前指令的权限 Linux权限管理 1、文件访问者的分类(人) 2、文件类型和访问权限(事物属性) 3、文件权限值的表示方法 4、文件访…

刷题刷题。

自然数拆分 利用step记录组合情况,只用sum不能判断组合情况 1.选择dfs原因:产生排列组合,和为7,step为8,其中7个空位,第8个step为输出; 参量的设置sum,step (进入下一层)…

ThingsBoard教程(四十):规则节点解析 计算增量节点 Calculate delta

本篇文章介绍一个ThingsBoard 规则引擎中的一个节点,Calculate delta Calculate delta 计算增量 该节点可以在规则中获取上一次遥测的值,以此可以实现二次遥测的差。比如一个设备,一天上传一次数据,如果你要对比今天和昨天的数据,并将两者数据差保存到数据库,就能够使用…

Spring MVC

目录 什么是Spring MVC MVC定义 MVC和Spring MVC的关系 怎么学Spring MVC 创建Spring MVC项目 0.使用Spring Boot来创建Spring MVC项目 1.实现连接 2.获取参数 获取单个参数 获取多个参数 获取对象 后端参数重命名 获取JSON对象 从基础的URL中获取参数 上传文件Re…

1688获取商品api接口

作为一名技术爱好者,我们总会遇到各种各样的技术问题,需要寻找合适的技术解决方案。而在互联网时代,我们可以快速通过搜索引擎获取丰富的技术资源和解决方案。然而,在不同的技术分享中,我们常常会遇到质量参差不齐的文…

linux中查看某个文件夹下文件的个数和大小

一、统计某个目录的文件和子目录的大小 1、stat指令 stat命令 主要用于显示文件或文件系统的详细信息,该命令的语法格式如下: -f  不显示文件本身的信息,显示文件所在文件系统的信息-L  显示符号链接-t  简洁模式,只显示…

如何压缩pdf文件大小?四种方法随意选择

如何压缩pdf文件大小?PDF文件格式由于其跨平台性,易于浏览、打印和传输等特点,在现代社会中广泛应用于各个领域。然而,随着PDF文件越来越大,传输及存储所需的时间也会变得越来越长,从而降低了工作效率。在这…