一、实验内容
导入员工示例测试数据库,手动开启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)相关实验。