线上慢SQL优化实战:摄影大赛统计功能性能提升记录
📅 2026/7/6 8:27:51
👁️ 阅读次数
📝 编程学习
一、 业务背景与问题描述
业务场景:
某班级进行摄影大赛,需要统计每位老师的拍摄数量。统计规则为:老师所带学生的拍摄数量总和。在列表页查询老师拍摄数量时,需要聚合统计学生数以及每个学生的拍摄数量。
数据模型:
- 学生表属性:包含应拍数、已拍数、审核数等统计字段。
- 核心关联表:
t_teacher(教师表)、t_student(学生表)、t_photo(照片/拍摄记录表)。
遇到的问题:
最初,查询老师的应拍数、已拍数、审核数是通过多表关联进行实时聚合查询的。随着数据量增长,接口响应极慢,线上监控频繁出现慢 SQL 告警,严重影响用户体验。
二、 慢SQL排查与定位
1. 查看慢查询相关参数
首先确认数据库是否开启了慢查询日志以及当前的阈值设置:
-- 查看慢查询相关参数 SHOW VARIABLES LIKE '%slow_query%'; SHOW VARIABLES LIKE '%long_query_time%';2. 开启慢查询日志
临时开启(重启失效,适合线上快速排查):
SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 1; -- 设置慢查询阈值为1秒 SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';永久生效(需修改 my.cnf 配置文件):
编程学习
技术分享
实战经验