SQL执行统计与性能画像的核心是将执行日志转化为可定位、可对比、可归因的结构化视图,关键在于精准选字段、合理聚合维度、快速识别异常;必存5类基础字段(SQL指纹、耗时、扫描行数、返回行数、执行次数),需统一指纹生成规则;须按business_tag+SQL指纹双层聚合,并建立动态基线与执行计划快照机制。
SQL执行统计与性能画像的核心,是把零散的执行日志转化为可定位、可对比、可归因的结构化视图。关键不在于采集多全,而在于字段选得准、聚合维度对、异常识别快。
高频慢SQL诊断最依赖5类基础字段:SQL指纹(去参数化后的标准化文本)、执行耗时(duration_ms)、扫描行数(rows_examined)、返回行数(rows_sent)、执行次数(count)。其中SQL指纹必须统一生成规则(如用正则替换字面量为?,忽略空格和换行),否则相同逻辑的SQL会被拆成多个“假热点”。错误示例:直接记录原始SQL,导致SELECT * FROM user WHERE id=1001和SELECT * FROM user WHERE id=1002被当作两条独立语句。
单纯按SQL指纹聚合只能看到“哪条SQL慢”,但无法回答“哪个服务/哪个功能在拖慢系统”。需要在采集端或预处理阶段注入业务标签:
business_tag
/* service=order, method=create */这类标记business_tag + SQL指纹分组,再向上卷到business_tag汇总,便于快速下钻
定阈值误杀把“耗时>1s”设为慢SQL阈值会漏掉高频轻量查询的累积影响,也会误报低峰期的合理波动。应基于历史行为自动计算动态基线:
很多性能问题只在特定数据分布或并发下出现,等收到告警再去explain,现场已不可复现。应在检测到异常SQL时自动捕获执行计划:
EXPLAIN FORMAT=JSON并存入plan表type从ref变成ALL,或key从idx_user_id变成NULL)不复杂但容易忽略。重点是让每条统计记录背后都能快速连到业务动作、执行逻辑和数据特征。