MySql的慢查询(慢日志)

news2024/9/30 0:25:12

1.什么是慢查询?

慢查询日志,就是查询花费大量时间的日志,是指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句的日志,以帮助开发者分析和优化数据库查询性能。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。

2.如何定位慢SQL?

1、简单版:show profile;

执行 SHOW PROFILE 命令时,它会显示关于服务器线程执行的详细信息,包括每个线程所执行的每个语句的执行时间、I/O 操作、上下文切换等。

注意:通常在开发和问题诊断期间使用,而不是在生产环境中持续启用。

性能开销SHOW PROFILE功能在启用时会对服务器的性能产生额外负担。每当一个查询执行时,MySQL服务器会收集详细的性能信息,包括CPU时间、等待时间、上下文切换次数等。这些信息的收集和存储会消耗额外的CPU和内存资源,这在高并发的生产环境中可能是不可接受的。

-- 启用性能监控
mysql> set profiling=1;


-- 执行SQL
mysql> SELECT  *  from  member

-- 性能分析
mysql> show profiles;

2.详细版本:performance_schema(不推荐)

--查看performance_schema的属性
mysql> SHOW VARIABLES LIKE 'performance_schema';

通义tongyi.ai_你的全能AI助手-通义千问 (lxblog.com)

3. 开启慢日志

1、查看mysql的慢查询日志是否开启

如果看到slow_query_log的值是OFF,也就是mysql默认是不启用慢查询日志的。

这里还有个long_query_time,默认是10秒,也就是超过了10秒即为慢查询。建议业务配置3秒

log_queries_not_using_indexes,如果设置为ON,则会将所有没有使用索引的查询都记录为慢查询。

2、如何启用慢查询日志呢?

开启慢日志

set global slow_query_log='ON';

-- 持久性,通过配置文件设置
[mysqld]
log_output=FILE,TABLE
slow_query_log=ON
long_query_time=0.001
slow_query_log_file = /usr/local/mysql/mysql-8.0/logs/slow_query.log

#一次性的,通过命令设置, long_query_time 是时间阈值。为方便测试,此处认为超过0.001s的就属于慢查询
mysql> SET GLOBAL log_output = 'FILE,TABLE';
mysql> set GLOBAL slow_query_log=ON;
mysql> SET GLOBAL long_query_time = 0.001;
mysql> SET GLOBAL slow_query_log_file = '/usr/local/mysql/mysql-8.0/logs/slow_query.log';

3、指定日志的输出格式

MySQL慢日志支持两种输出格式:TABLE和FILE 日志持久化

1. TABLE格式(推荐):慢日志以表格的形式存储在MySQL数据库中的`slow_log`表中。每个查询都作为一个记录插入到表中,每条记录包含了查询的详细信息,如执行时间、查询语句等。这种格式的主要优点是便于查询和分析,可以直接使用SQL语句对记录进行过滤和聚合操作。通过查询`slow_log`表,可以轻松地获取慢查询信息,比较适合进行简单的查询分析。

2. FILE格式:慢日志以文本文件的形式存储在磁盘上。每条慢日志记录都以一行文本的形式存储,记录中包含了查询的详细信息,如执行时间、查询语句等。这种格式的主要优点是方便日志的传输和存储,可以通过文件操作实现更复杂的查询和分析。通过阅读慢查询日志文件,可以详细了解查询的执行情况,包括执行时间等信息,并进行更深入的分析。

MySQL支持TABLE和FILE两种输出格式,可以用下面的命令来查看当前的输出格式:

show variables like '%log_output%';

设置输出格式:

set global log_output=’FILE’;
set global log_output=’TABLE’;
set global log_output=’FILE,TABLE’;

4、测试

因为我们的超时时间设置为10秒,那么下面这个查询就一定会超时。

select sleep(11);

查看TABLE记录的慢日志:

select * from mysql.slow_log;

初始化慢日志表:TRUNCATE TABLE mysql.slow_log;

这里面记录了查询时间、发起查询的客户端、扫描行数、执行的sql语句等信息。

5.查看FILE记录的慢日志:

先找到日志文件

打开文件,查看记录的内容:

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐4款2024年热门的PDF转ppt工具

有时候,我们为了方便,需要将PDF里面的内容直接转换的PPT的格式,既方便自己演示和讲解,也让我们可以更加灵活的进行文件的编辑和修改。如果大家不知道要如何进行操作的话,我可以为大家推荐几个比窘方便实用的PDF转换工具…

报错Invalid HADOOP_HDFS_HOME

使用env命令查看已有环境变量 果然多了一个变量,因为不需要,所以删除,再次使用env命令查看,无此变量 再输入hadoop,显示正确

并发面试合集

1.创建线程的方式 区分线程和线程体的概念,线程体通俗点说就是任务。创建线程体的方式:像实现Runnable、Callable接口、继承Thread类、创建线程池等等,这些方式并没有真正创建出线程,严格来说,Java就只有一种方式可以…

Arthas watch (方法执行数据观测)

文章目录 二、命令列表2.3 monitor/watch/trace/stack/tt 相关2.3.5 watch (方法执行数据观测)举例1:监控方法举例2:同时观察函数调用前和函数返回后 本人其他相关文章链接 二、命令列表 2.3 monitor/watch/trace/stack/tt 相关 2.3.5 watc…

王道-计组

4 设相对寻址的转移指令占4字节,其中第1、第2字节是操作码,第3、第4字节是相对位移量(用补码表示)。设当前PC的内容为2008H,要求转移到2001H的地址,则该转移指令第3、第4字节的内容应为______ 答案:A 解析:由于指令占4字节,取指令之后(PC)+4。第3、第4字节的内容为:2…

Linux基础(三):安装CentOS7(系统安装+桥接联网+换源)

1.分区设置 由于使用 GPT 的关系, 因此根本无须考虑主/延伸/逻辑分区的差异。CentOS 默认使用 LVM 的方式来管理你的文件系统。使用GPT进行分区: 开机管理程序( boot loader) 使用CentOS 7.x默认的grub2软件。 2.各种分区格式 …

《Linux从小白到高手》理论篇(四):Linux用户和组相关的命令

List item 本篇介绍Linux用户和组相关的命令,看完本文,有关Linux用户和组相关的常用命令你就掌握了99%了。Linux用户和组相关的命令可以分为以下六类: 一.用户和用户组相关查询操作命令: Id id命令用于显示用户的身份标识。常见…

【Android 14源码分析】Activity启动流程-1

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

MySQL:存储引擎简介和库的基本操作

目录 一、存储引擎 1、什么是存储引擎? 2、存储引擎的分类 关系型数据库存储引擎: 非关系型数据库存储引擎: 分布式数据库存储引擎: 3、常用的存储引擎及优缺点 1、InnoDb存储引擎 2、MyISAM存储引擎 3、MEMORY存储引擎 …

android kotlin Extension扩展函数

1、新建一个kt文件&#xff1a; 2、代码&#xff1a; class User(var name:String)/**扩展函数**/ fun User.Print(){print("用户名 $name") }// 扩展函数 swap,调换不同位置的值 fun MutableList<Int>.swap(index1: Int, index2: Int) {val tmp this[index1…

组合逻辑元件与时序逻辑元件

组合逻辑元件和时序逻辑元件都是数字电路中的基本构建块&#xff0c;但它们在功能和结构上存在显著差异。 1. 组合逻辑元件: 内容: 组合逻辑元件的输出仅取决于当前的输入&#xff0c;而与之前的输入无关。 它们没有记忆功能。 常见的组合逻辑元件包括&#xff1a; 与门 (AND…

Java | Leetcode Java题解之第437题路径总和III

题目&#xff1a; 题解&#xff1a; class Solution {public int pathSum(TreeNode root, int targetSum) {Map<Long, Integer> prefix new HashMap<Long, Integer>();prefix.put(0L, 1);return dfs(root, prefix, 0, targetSum);}public int dfs(TreeNode root,…

红帽RHCE和RHCA有什么区别

在红帽认证体系当中&#xff0c;RHCE&#xff08;Red Hat Certified Engineer&#xff09;以及 RHCA&#xff08;Red Hat Certified Architect&#xff09;乃是两项极具声望的高级认证。众多人士对于它们彼此之间存在的区别&#xff0c;深感困惑不解。接下来&#xff0c;IT 小编…

UE4_Niagara基础实例—3、使用自定义模块二

效果&#xff1a; 粒子限制在球形范围内 操作步骤&#xff1a; 1、因为我们要对粒子的位置进行控制&#xff0c;所以需要开启本地空间&#xff0c;粒子与发射器位置有关。使用GPU计算模拟&#xff0c;需勾选固定边界。 2、简单调节其它参数&#xff1a; 3、现在我想把粒子锁定…

【Linux的内存管理】

为什么需要内存管理 分段和分页内存分段内存分页 分页情况下&#xff0c;虚拟内存如何映射到物理地址页表原理多级页表 TLB快表段页式内存管理需要为什么进程地址空间Linux的进程虚拟地址空间管理进程地址空间如何分配虚拟内存虚拟内存的管理程序编译后的二进制文件如何映射到虚…

《Zeotero的学习》

学习视频链接 Zeotera的安装 官网点击download&#xff0c;选择合适的版本进行下载&#xff0c;并安装插件。 下载完成之后&#xff0c;点击安装包&#xff0c;一路默认就可以。如果不想下载在C盘&#xff0c;可以在步骤中选择自定义路径。 Zeotero的注册 官网进行注册&am…

AIGC: 从两个维度快速选择大模型开发技术路线

在当今人工智能飞速发展的时代&#xff0c;大模型开发技术路线的选择至关重要。本文将从两个维度出发&#xff0c;为大家快速介绍不同的大模型开发技术路线&#xff0c;帮助你在开发过程中做出明智的决策。 一、两个维度解析 传入大模型的信息 低要求&#xff1a;传入的信息相…

【D3.js in Action 3 精译_025】3.4 让 D3 数据适应屏幕(中)—— 线性比例尺的用法

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

Activity的生命周期分析

目录 Activity的生命周期全面分析 典型情况下的生命周期分析 异常情况下的生命周期分析 情况1&#xff1a;资源相关的系统配置发生改变导致Activity被杀死并重新创建 Activity的生命周期全面分析 在Android开发中&#xff0c;Activity的生命周期是非常重要的概念。它描述了…

数仓建模:DataX同步Mysql数据到Hive如何批量生成建表语句?| 基于SQL实现

目录 一、需求 二、实现步骤 1.数据类型转换维表 2.sql批量生成建表语句 三、小结 如果觉得本文对你有帮助&#xff0c;那么不妨也可以选择去看看我的博客专栏 &#xff0c;部分内容如下&#xff1a; 数字化建设通关指南 专栏 原价99&#xff0c;现在活动价39.9&#x…