📋 目录一、统计概览二、Top10 慢查询明细三、高频慢查询模式(指纹归一化,1,237 条全四、逐条优化建议汇总五、数据来源与生成时间

MySQL 慢查询日报 2026-09-28

统计范围:2026-09-28 00:00:00 ~ 23:59:59(Asia/Shanghai,ES @timestamp 按 UTC 换算)
环境:staging | 数据源:MCP es_slow_logs / es_search(索引 mysql_slow-*)| 全程只读

一、统计概览

指标数值
慢查询总条数1,237
累计耗时4.16 小时
单条平均 / 最大耗时12.1s / 1,502.7s(t8891.t_item_modi_histories backup)
backup 用户(mysqldump)条数 / 累计411 条 / 3.30h(占 79% 耗时)
非 backup 条数 / 累计826 条 / 0.90h
慢查询最多实例LAN_addcn_84(8891 master,268 条)、LAN_addcn_27_3307(hk8591,221 条)
主要来源用户backup 411、jmysql(监控)317、8591 应用 173、sonic 89、a591 51

二、Top10 慢查询明细

#耗时用户库.表rows_sent慢因类型
11502.7sbackupt8891.t_item_modi_histories5,693,964大结果集传输(mysqldump 全表导出,EXPLAIN type=ALL 预估 502 万行 / 14G)
21135.6sbackupt8891.t_sele_item_infos3,290,762大结果集传输(全表导出,301 万行 / 20G)
3467.3sbackupt8891.yahoo_car_details16,681大结果集传输(行数少但含 raw_html 等超宽字段,18M/scan)
4365.0sbackupt8891.t_subscription_push39,105,741大结果集传输(3,953 万行 / 33G,全表仅 4 列)
5300.3sbackupt8891.t_sele_item_photos22,929,970大结果集传输(2,180 万行 / 80G 宽行)
6294.8sbackupt591.t1_daily_report29,838,336大结果集传输(2,885 万行 / 7G)
7290.8ssonic(事务 commit,无表)0其他:commit 落盘耗时(大事务/IO 争用,Lock_time≈0)
8238.1sbackupanylink_corp.access_audit56,491,318大结果集传输(5,212 万行 / 65G,仅 PRIMARY KEY 无二级索引)
9229.4sbackupanylink.access_audit49,054,753大结果集传输(4,539 万行 / 56G)
10223.8sbackuphk8591.h8_orders39,105,741*大结果集传输(全表导出,249 万行,行极宽)

\* #10 rows_sent 与 #4 相同系慢日志字段采集所致,以 rows_examined≈249 万为准。

Top10 结论:9/10 为 mysqldump 全表导出(SELECT /*!40001 SQL_NO_CACHE */ *),EXPLAIN 全部为 type=ALL 全表扫描——这是备份的固有行为,加索引无意义;#7 为 sonic 事务 commit 耗时。Top10 无一为业务 SQL 缺索引问题。

三、高频慢查询模式(指纹归一化,1,237 条全量)

按条数 Top5

#条数平均最大累计用户实例指纹
12551.47s2.8s6.2minjmysql8.27/8.37/8.40/8.46 多实例SHOW ENGINE INNODB STATUS;
2925.76s290.8s8.8mineagle, sonic8.37, 8.84commit;
3482.26s13.9s1.8min85918.27:3307select id,buyer_id,completed_at from h8_orders where buyer_id IN (?) and state=? order by created_at asc
4331.32s1.9s0.7minbee, jumper_dev8.27, 8.37COMMIT;
5331.22s2.3s0.7min85918.27:3307insert into h8_telescope_entries (...) values (...多行...)

按累计耗时 Top5

#条数平均最大累计用户指纹
111502.7s1502.7s25.0minbackupSELECT /*!? SQL_NO_CACHE */ * FROM t8891.t_item_modi_histories
211135.6s1135.6s18.9minbackupSELECT ... FROM t8891.t_sele_item_infos
3925.76s290.8s8.8mineagle, soniccommit;
41630.33s70.9s8.1min8591SELECT sum(after_amount-before_amount) FROM h8_finance_account_logs where user_id=? and sub_account=?
51467.3s467.3s7.8minbackupSELECT ... FROM t8891.yahoo_car_details

backup 模式标注:mysqldump 全表导出类指纹(user=backup / databasus_backup,共 411 条 / 3.3h)已在表中加粗标注,不触发深度分析;昨日条数与常规备份规模一致(每表 1 条),未见环比翻倍异常。

触发深度分析的模式

触发规则:非 backup 模式条数>100 或 累计>30min 必须深入。昨日仅 SHOW ENGINE INNODB STATUS(255 条 >100)硬性触发;另对最伤业务的 h8_finance_account_logs(avg 30s)、h8_orders buyer_id IN(48 条)、house_repost(19 条 avg 1.1s)、h8_telescope_entries delete(6 条 avg 41s)一并做了完整 describe_schema + EXPLAIN 深挖。

模式 1:SHOW ENGINE INNODB STATUS;(255 条,硬性触发)

模式 4(重点):SELECT sum(after_amount - before_amount) FROM hk8591.h8_finance_account_logs WHERE user_id=? AND sub_account=?(16 条,avg 30.3s,max 70.9s)

ALTER TABLE hk8591.h8_finance_account_logs ADD INDEX idx_user_sub_amounts (user_id, sub_account, before_amount, after_amount);

可消除回表并让 SUM 直接在索引上完成;业务侧建议把"余额"做成 h8_finance_accounts 余额列(记账时原子更新),避免每次全量 SUM 流水。

模式 3:h8_orders buyer_id IN (...) AND state=? ORDER BY created_at(48 条,avg 2.3s)

house_repost(19 条):SELECT * FROM t591.house_repost WHERE ispay=? AND status=? AND type!=? ORDER BY rectime ASC

ALTER TABLE t591.house_repost ADD INDEX idx_pay_status_rectime (status, ispay, rectime);

同时避免 SELECT *(该表含 log 文本列)。

h8_telescope_entries 清理 DELETE(6 条,avg 40.9s,max 212s)

h8_orders JSON 聚合(14 条,avg 1.3s):sum(json_unquote(json_extract(properties,'$.card_commission_charges')))

四、逐条优化建议汇总

  1. 备份(Top1-6/8-10,3.3h):staging mysqldump 与业务高峰重叠是大头。建议错峰(凌晨低峰执行)、限流(--single-transaction --sleep/ionice),长期改 XtraBackup 物理备份或直接用从库(8.59/8.52/8.46)导出,避免在 8.84/8.51 主库压 IO。
  2. h8_finance_account_logs SUM:加覆盖索引 (user_id, sub_account, before_amount, after_amount);架构上改余额列,消除高频全量 SUM。
  3. h8_orders buyer_id 查询:加 (buyer_id, state, created_at) 或 FORCE INDEX(bica),消除 filesort。
  4. house_repost:加 (status, ispay, rectime) 复合索引,去 SELECT *。
  5. h8_telescope_entries:加 created_at 索引 + 缩短 Telescope 保留期。
  6. anylink/anylink_corp.access_audit(52M/45M 行、仅主键):审计表只增不删,建议按 created_at 分区或定期归档,减小备份体量。
  7. sonic commit 290s:检查 sonic(8.84)应用事务大小与 binlog 刷盘(innodb_flush_log_at_trx_commit/sync_binlog 在 staging 可放宽),避开备份窗口。

五、数据来源与生成时间