【MySQL】练习5-1:配置慢查询日志

一、实验内容

导入员工示例测试数据库,手动开启MySQL慢查询日志;分别将慢查询日志输出到日志文件、系统数据表两种模式,执行耗时较长的SQL语句,观察慢查询日志记录效果,掌握慢查询日志配置与查看方法。

二、实验步骤

1. 执行sql脚本,导入employees员工示例数据库

bash 复制代码
cd /stage/databases/employees_db
mysql -uroot -p < employees.sql

输入MySQL root密码,脚本自动创建库、导入部门、员工、薪资等所有测试表数据。

2. 登录MySQL交互式客户端

bash 复制代码
mysql -uroot -p

输入密码,进入mysql命令行交互会话。

3. 全局配置慢查询日志文件名

sql 复制代码
SET GLOBAL slow_query_log_file='slow-query.log';

4. 设置慢查询判定阈值:执行超过0.2秒的SQL均会被记录

sql 复制代码
SET SESSION long_query_time=0.2;

5. 开启慢查询日志总开关

sql 复制代码
SET GLOBAL slow_query_log=ON;

6. 切换至employees库,执行耗时查询语句

sql 复制代码
USE employees;

SELECT emp_no, salary FROM salaries 
WHERE from_date BETWEEN '1986-01-01' AND '1986-01-07'
ORDER BY from_date, salary;

执行完毕查看语句耗时,该SQL执行时长超过0.2秒,会被慢日志捕获。

7. 在mysql终端调用系统命令,查看日志文件内容

sql 复制代码
\! cat /var/lib/mysql/slow-query.log

可看到刚才执行的查询语句、执行时间、扫描行数等日志详情。

8. 查询系统自带慢日志数据表(初始为空)

sql 复制代码
SELECT * FROM mysql.slow_log;

此时日志输出目标为文件,数据表内无记录。

9. 修改日志输出模式:日志写入mysql.slow_log系统表,不再写入文件

sql 复制代码
SET GLOBAL log_output='TABLE';

10. 再次重复执行第6步的慢SQL语句

sql 复制代码
SELECT emp_no, salary FROM salaries 
WHERE from_date BETWEEN '1986-01-01' AND '1986-01-07'
ORDER BY from_date, salary;

11. 重新查询慢日志数据表,验证数据已入库

sql 复制代码
SELECT * FROM mysql.slow_log;

数据表中出现本次SQL的完整执行日志信息。

12. 保持当前mysql客户端会话不要关闭

留存会话,方便接续完成下一节练习5-2:性能模式(Performance Schema)相关实验。

相关推荐
Decay__13 小时前
12_MySQL InnoDB 内存与锁调优 —— Buffer Pool、redo log、隔离级别与锁等待
运维·数据库·sql·mysql·架构
java_logo15 小时前
Docker 部署 Dify:轻松搭建 LLM 应用开发平台
运维·docker·容器
方便面不加香菜16 小时前
Docker Container -- 综合实战案例详解
运维·docker·容器
LongRunning17 小时前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
海洋之恒17 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·自动化·github
迪康coolmu18 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
民乐团扒谱机20 小时前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
물の韜20 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
qq_3718021120 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu