MySQL 开启慢查询日志的方法

MySQL 慢查询日志是用来记录执行时间较长的 SQL 语句的。通过分析慢查询日志,可以找出性能问题并进行优化。本文将介绍如何开启 MySQL 的慢查询日志,并且会给出两个示例。

步骤一:编辑 MySQL 配置文件

首先,需要找到 MySQL 的配置文件 my.cnf 或者 my.ini。通常在 Linux 上,my.cnf 文件位于 /etc/mysql/ 目录中;Windows 上则位于 MySQL 安装目录。打开该文件,找到 [mysqld] 配置块,添加以下内容:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
  • slow_query_log = 1:表示开启慢查询日志。0 表示关闭,默认为关闭状态。
  • slow_query_log_file:表示慢查询日志文件的存储路径。该路径必须有写权限。我们可以将日志文件保存在 /var/log/mysql/ 目录下。
  • long_query_time:表示执行时间达到多少秒的 SQL 查询会被记录到慢查询日志中。这里设置为 2 秒。

完成修改后,保存文件并重启 MySQL 服务,让设置生效。

步骤二:测试慢查询日志

为了测试慢查询日志是否生效,我们创建一张名为 users 的表,并向其中插入 100 万条数据:

CREATE TABLE users (
  id INT(11) NOT NULL AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  email VARCHAR(50) NOT NULL,
  PRIMARY KEY (id)
);

INSERT INTO users (name, email)
SELECT CONCAT('user', i), CONCAT('user', i, '@example.com')
FROM (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) sub1,
     (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) sub2,
     (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) sub3,
     (SELECT 1 AS i UNION SELECT 2 UNION SELECT 3 UNION SELECT 4) sub4;

接着,执行一个执行时间达到 5 秒的查询:

SELECT COUNT(*) FROM users u1, users u2, users u3, users u4, users u5;

我们可以通过以下命令检查慢查询日志文件的内容:

sudo tail /var/log/mysql/mysql-slow.log

可以看到输出结果如下:

# Time: 2021-09-06T08:05:42.543792Z
# User@Host: root[root] @ localhost []  Id:     3
# Query_time: 5.000064  Lock_time: 0.000119 Rows_sent: 1  Rows_examined: 1099511627776
SET timestamp=1630920342;
SELECT COUNT(*) FROM users u1, users u2, users u3, users u4, users u5;

可以看到我们执行的查询被记录到了慢查询日志中,并且查询时间超过了我们所设定的阈值。

示例二:手动记录慢查询

有时候我们需要手动记录某个查询语句到慢查询日志中,可以通过 MySQL 提供的 /*!50000 */ 注释来实现。

例如,我们想手动将下面这个查询加入到慢查询日志中:

SELECT * FROM users WHERE name LIKE '%john%';

只需要在该查询语句前加上 /*!50000 */ 注释:

/*!50000 SELECT * FROM users WHERE name LIKE '%john%'; */

接下来会将这个查询语句记录到慢查询日志中。

结束语

开启 MySQL 的慢查询日志有助于我们找出性能瓶颈,并进行优化。通过本文,你已经了解了如何开启慢查询日志,并且也学会了如何手动记录某个查询到日志中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL 开启慢查询日志的方法 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Redis集群搭建全记录

    Redis集群搭建全记录 在本攻略中,我将会详细讲解如何搭建Redis集群。本攻略中的示例基于Ubuntu操作系统的环境,其他操作系统也类似,仅可能存在些许不同。 准备工作 在开始搭建Redis集群之前,我们需要做一些准备工作: 下载Redis安装包。可以在Redis官网上下载最新版本的Redis安装包,也可以使用系统包管理器直接安装Redis。 安装和配置…

    database 2023年5月22日
    00
  • DBMS 三层架构

    DBMS三层架构是指数据库管理系统的架构被分成了三层,分别是外层用户视图层、中间逻辑层和内层数据层,通常被称为三层架构设计。这种设计将数据库应用程序的逻辑和数据分离开来,使得各个层次之间解耦,降低了应用程序的维护成本,同时提高了可扩展性。 下面我将详细讲解DBMS三层架构的攻略及实例说明。 外层用户视图层 外层用户视图层是面向用户的,为用户提供方便直观的操作…

    database 2023年3月27日
    00
  • 详解MongoDB创建数据库步骤

    MongoDB是一款基于文档存储的非关系型数据库,以下是如何创建数据库的完整攻略。 安装MongoDB 首先需要在计算机上安装MongoDB,安装方法可以查看官方文档或者从MongoDB官网下载安装程序,根据安装向导完成安装。 启动MongoDB服务 在安装完成后,需要启动MongoDB服务。在Windows系统中,可以通过运行CMD或者PowerShell…

    MongoDB 2023年3月14日
    00
  • SQL SERVER 2008数据库引擎详细介绍

    SQL SERVER 2008数据库引擎详细介绍 SQL Server 2008是由微软开发的企业级关系数据库管理系统,其核心组件为数据库引擎。本文将介绍SQL Server 2008数据库引擎的详细内容。 数据库引擎架构 SQL Server 2008数据库引擎的主要组件包括: 存储引擎:用于存储和检索数据的底层组件,实现了ACID事务控制、并发控制等功能…

    database 2023年5月19日
    00
  • MySQL 8.0.x for Windows 解压缩版配置安装

    一、官网下载MySQL8.0.16 直达官网下载Community版:https://dev.mysql.com/downloads/mysql/然后拉倒下方点击对应版本位数下载   二、创建my.ini 下载完压缩包之后就解压,再创建一个同级空目录mysqlData,再进入mysql8.0.16安装根目录创建一个my.ini配置 [mysqld] # 设置…

    MySQL 2023年4月13日
    00
  • Mysql高性能优化技能总结

    Mysql高性能优化技能总结 背景 在高并发访问下,Mysql数据库的性能往往会成为瓶颈,影响应用服务的响应时间。因此,对Mysql进行性能优化是非常必要的。 总结 数据库基本优化 优化导入数据时的性能:使用LOAD DATA LOCAL INFILE代替INSERT,将数据集装载到表中,这种方法比insert快得多,与事务不同,每行被直接插入到表中,处理大…

    database 2023年5月22日
    00
  • SQL Server中带有OUTPUT子句的INSERT,DELETE,UPDATE应用

    下面是详细讲解SQL Server中带有OUTPUT子句的INSERT、DELETE、UPDATE应用的完整攻略。 什么是OUTPUT子句 OUTPUT子句是一个可选的语法元素,可以在执行INSERT、DELETE、UPDATE语句时使用。它允许返回与操作相关的数据作为结果集或将数据插入到表或表变量中。OUTPUT子句对于与数据源交互的应用程序和查询很有用。…

    database 2023年5月21日
    00
  • 详解element-ui日期时间选择器的日期格式化问题

    下面是详解element-ui日期时间选择器的日期格式化问题的完整攻略。 问题描述 当使用Element-UI中的日期时间选择器组件时,在选择日期时间后,组件显示的值的格式不是我们想要的,需要对显示的日期值进行格式化。 解决方法 为了解决上述问题,我们需要使用Element-UI日期时间选择器提供的格式化选项,具体如下: 在组件中设置日期格式化选项 代码示例…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部