【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)相关实验。

相关推荐
哈__7 小时前
KES-Operator正式发布:基于Kubernetes的数据库集群云原生全生命周期管理方案
数据库·云原生·kubernetes
nxb5568 小时前
云原生:kubernetes的service
微服务·云原生·容器·kubernetes
ZzzZZzzzZZZzzzz…8 小时前
K8s---组件
运维·云原生·容器·kubernetes·k8s·k8s组件
行业研究员8 小时前
云原生数据库推荐排行与选型
数据库·云原生·云原生库
Maynor9968 小时前
「原子弹爆炸」级别:Astra 复刻游戏合集(含实机截图)
java·linux·运维·数据库·gpt·游戏
陈皮糖..8 小时前
基于 Kubernetes 与 GitLab CI/CD 的云原生自动化交付平台
运维·ci/cd·云原生·架构·kubernetes·自动化·gitlab
CV艺术家8 小时前
openssL生成免费的证书
java·linux·服务器
脚踏实地,坚持不懈!8 小时前
Android 系统工程师(性能/功耗/稳定性)岗位问题深度解析:从内核源码到实战排查(完善版)
android·linux·运维·服务器
0+1118 小时前
Linux --进程信号
linux·运维·服务器
Lethehong8 小时前
服务器越来越多怎么统一监控?Beszel 接入 Agent、SMTP 告警与公网访问
运维·服务器