线上慢SQL优化实战:摄影大赛统计功能性能提升记录

📅 2026/7/6 8:27:05
线上慢SQL优化实战:摄影大赛统计功能性能提升记录
一、 业务背景与问题描述业务场景:某班级进行摄影大赛,需要统计每位老师的拍摄数量。统计规则为:老师所带学生的拍摄数量总和。在列表页查询老师拍摄数量时,需要聚合统计学生数以及每个学生的拍摄数量。数据模型:学生表属性:包含应拍数、已拍数、审核数等统计字段。核心关联表: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配置文件):