news 2026/2/18 17:19:28

MySQL数据库慢SQL监听

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL数据库慢SQL监听

在MySQL数据库中,自带了慢SQL的监听和记录功能,下面演示下如何如何来查看。当前数据库版本为8.0.42

开启慢SQL记录

show variables like '%query%';

通过执行上面的语句,可以看到当前数据库的情况(默认,没有修改过)

如果查询到的结果是slow_query_log=OFF,表示慢SQL记录功能未开启,手动开启即可,具体操作如下:

#开启慢SQL日志功能
set GLOBAL slow_query_log=on;


#慢SQL执行时间阈值,单位(秒) ,1毫秒=0.001
#不建议超过300ms,最终结果视情况而定
set global long_query_time=0.001;


#指定慢SQL文件名为slow-sql,慢SQL日志保存在mysql/data目录下
set global slow_query_log_file="slow-sql.log";

long_query_time默认值是10秒钟,把它改成0.001,为了方便下面的演示。

同时把slow_query_log_file的文件名称改成因为,中文会乱码。

修改配置后,需要重启navicat,否则不生效。

将慢SQL的定义改成0.001秒(1毫秒)之后,再次查询配置信息:

查看慢SQL记录

在数据库执行一个查询,然后观察慢SQL文件记录的信息。

任意执行一个查询,只要查询时间超过1毫秒即可:

执行完成,找到MySQL安装目录,到到data目录下面的slow-sql.log文件

打开文件,找到最后一次的记录

下面对其中的内容进行分析,对每个参数进行说明:

其中需要重点关注的两个参数是 Time(SQL执行时间),Rows_examined(扫描的行数),这两个值越大,说明SQL执行效率越低,需要进行优化。

MySQL优化技巧,可以参考下面的文章:

https://blog.csdn.net/liangmengbk/article/details/155714304?spm=1001.2014.3001.5501

查看哪些SQL没有使用到索引

除了记录慢SQL能到知道哪些SQL语句执行效率低外,还有一种方式可以达到类似的效果,那就是把没有使用到索引的SQL记录下来。没有使用到索引的SQL也是我们可以进行优化的重点对象。

首先是在MySQL中要开启 未使用索引的语句记录 开关,命令如下:

set global log_queries_not_using_indexes=on;

执行这个命令打开这个开关,如果执行的SQL没有使用到任何索引,则自动会被记录下来(内容也是放在slow-sql.log文件中,和慢SQL放在一个文件的),方便分析。

开启后,也是需要重启navicat,才能生效。

为了验证能准确记录相关信息,先把慢SQL的时间改成10秒,暂时不记录慢SQL,观察slow-sql.log文件的内容。

下面执行一个查询

因为这个查询使用了like关键字,且前后都有%,会导致原有的索引失效,也就是说这个SQL肯定没有用到索引,打开slow-sql.log文件看下记录的内容。

确实被记录下来了,因为当前设置的慢SQL标准是10秒,而该SQL执行仅花费0.0014秒,所以它就是因为没有用到索引而记录的。

同时还发现它的下面有两个SQL也被记录下来了,这两个SQL是MySQL数据库系统表的相关SQL,虽然不是我们人为执行的,但是以为它没有用到索引,所以也被记录下来,可以不用关注。目前还没有办法做到只记录我们自己执行的SQL,而避开MySQL系统的SQL。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/18 4:12:34

45、Python Socket编程:深入解析与实践

Python Socket编程:深入解析与实践 1. 协程与线程服务器响应时间对比 在某些测试环境下,基于协程的服务器平均响应时间表现优于基于线程的服务器。例如,在一台双核2 GHz的MacBook上,对1000个请求进行测量,基于协程的服务器平均响应时间约为1ms,而基于线程的服务器则为5…

作者头像 李华
网站建设 2026/2/2 23:40:00

AI SQL生成终极指南:5分钟学会自然语言转SQL查询

AI SQL生成终极指南:5分钟学会自然语言转SQL查询 【免费下载链接】dify 一个开源助手API和GPT的替代品。Dify.AI 是一个大型语言模型(LLM)应用开发平台。它整合了后端即服务(Backend as a Service)和LLMOps的概念&…

作者头像 李华
网站建设 2026/2/7 23:30:31

【多线程】多线程中的安全问题

目录 一、体会线程安全问题 二、线程安全的概念 三、线程安全问题的原因 四、解决线程安全问题的方法 4.1 synchronized 关键字 一、体会线程安全问题 当我们编写一个多线程程序,要求两个线程对同一个变量(共享变量)进行修改&#xff0…

作者头像 李华
网站建设 2026/2/14 13:29:38

橙单低代码平台2025:企业级应用开发的效率革命

橙单低代码平台2025:企业级应用开发的效率革命 【免费下载链接】orange-form 橙单中台化低代码生成器。可完整支持多应用、多租户、多渠道、工作流 (Flowable & Activiti)、在线表单、自定义数据同步、自定义Job、多表关联、跨服务多表关联、框架技术栈自由组合…

作者头像 李华
网站建设 2026/2/16 20:16:52

终极免费AI对话工具:零基础搭建完整指南

终极免费AI对话工具:零基础搭建完整指南 【免费下载链接】freegpt-webui GPT 3.5/4 with a Chat Web UI. No API key required. 项目地址: https://gitcode.com/gh_mirrors/fre/freegpt-webui 想要体验最先进的AI对话能力却苦于没有API密钥?这个基…

作者头像 李华
网站建设 2026/2/10 9:47:29

React useContextSelector性能优化深度解析

React useContextSelector性能优化深度解析 【免费下载链接】use-context-selector React useContextSelector hook in userland 项目地址: https://gitcode.com/gh_mirrors/us/use-context-selector 项目概述 use-context-selector是一个专为解决React Context性能问题…

作者头像 李华