mysql 8.0 慢查询_MySQL慢查询 - 开启慢查询

本文介绍了如何开启和配置MySQL 8.0的慢查询日志,以定位和优化数据库性能瓶颈。详细步骤包括查看现有参数、通过全局变量或配置文件设置慢查询参数,以及测试慢查询日志的生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、简介

开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。

二、参数说明

slow_query_log 慢查询开启状态

slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)

long_query_time 查询超过多少秒才记录

三、设置步骤

1.查看慢查询相关参数

复制代码

mysql> show variables like 'slow_query%';

+---------------------------+----------------------------------+

| Variable_name | Value |

+---------------------------+----------------------------------+

| slow_query_log | OFF |

| slow_query_log_file | /mysql/data/localhost-slow.log |

+---------------------------+----------------------------------+

mysql> show variables like 'long_query_time';

+-----------------+-----------+

| Variable_name | Value |

+-----------------+-----------+

| long_query_time | 10.000000 |

+-----------------+-----------+

复制代码

2.设置方法

方法一:全局变量设置

将 slow_query_log 全局变量设置为“ON”状态

mysql> set global slow_query_log='ON';

设置慢查询日志存放的位置

mysql> set global slow_query_log_file='/usr/local/mysql/data/slow.log';

查询超过1秒就记录

mysql> set global long_query_time=1;

方法二:配置文件设置

修改配置文件my.cnf,在[mysqld]下的下方加入

[mysqld]

slow_query_log = ON

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

long_query_time = 1

3.重启MySQL服务

service mysqld restart

4.查看设置后的参数

复制代码

mysql> show variables like 'slow_query%';

+---------------------+--------------------------------+

| Variable_name | Value |

+---------------------+--------------------------------+

| slow_query_log | ON |

| slow_query_log_file | /usr/local/mysql/data/slow.log |

+---------------------+--------------------------------+

mysql> show variables like 'long_query_time';

+-----------------+----------+

| Variable_name | Value |

+-----------------+----------+

| long_query_time | 1.000000 |

+-----------------+----------+

复制代码

四、测试

1.执行一条慢查询SQL语句

mysql> select sleep(2);

2.查看是否生成慢查询日志

ls /usr/local/mysql/data/slow.log

如果日志存在,MySQL开启慢查询设置成功!

在使用 Docker Compose 部署 MySQL 8.0 时,若需配置 `MYSQL_DATA_DIR` 和 `MYSQL_LOG_DIR`,可以通过 `environment` 和 `volumes` 两个配置项分别定义环境变量和挂载目录。 MySQL 官方镜像支持通过环境变量 `MYSQL_DATA_DIR` 指定数据目录,但需注意该目录应在容器内部存在并具有合适的权限。此外,日志目录 `MYSQL_LOG_DIR` 通常由 MySQL 的配置文件定义,也可通过环境变量或自定义配置文件进行调整。 以下是一个基于 `docker-compose` 部署 MySQL 8.0 并配置这两个路径的示例配置: ```yaml version: '3' services: mysql: image: mysql:8.0 container_name: mysql restart: always hostname: db.example.com environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: test MYSQL_DATABASE: test MYSQL_USER: test MYSQL_PASSWORD: test MYSQL_DATA_DIR: /var/lib/mysql-custom MYSQL_LOG_DIR: /var/log/mysql-custom ports: - "3306:3306" volumes: - ./mysql/data:/var/lib/mysql-custom - ./mysql/logs:/var/log/mysql-custom - ./mysql/conf.d:/etc/mysql/conf.d - ./mysql/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 ``` 在此配置中: - `MYSQL_DATA_DIR` 被设置为 `/var/lib/mysql-custom`,并通过 `volumes` 挂载本地目录 `./mysql/data` 到该路径。 - `MYSQL_LOG_DIR` 被设置为 `/var/log/mysql-custom`,并通过 `volumes` 挂载本地目录 `./mysql/logs` 到该路径。 - 为了确保 MySQL 正常运行,还指定了 `command` 参数以覆盖默认配置[^1]。 此外,确保 MySQL 的配置文件中引用了这些自定义路径,例如在 `./mysql/conf.d` 中创建一个 `custom.cnf` 文件,内容如下: ```ini [mysqld] datadir=/var/lib/mysql-custom log_error=/var/log/mysql-custom/error.log ``` 此配置将 MySQL 的数据目录和错误日志路径分别指向自定义目录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值