MySQL 慢查询日报 2026-09-08

统计概览

项目值
统计范围2026-09-08 00:00:00 ~ 23:59:59(Asia/Shanghai,未触发前日回退)
环境staging
慢日志条数(ES mysql_slow-*,@timestamp)4,768 条(单页拉全量,无翻页)
Top10 单条最慢2,152.00 s(backup 全表导出 test.facebook_photo,42.6 GB 传输)
非备份模式最大累计耗时23,367 s ≈ 6.49 h(tmp_cvd_t12 去重临时表,144 次 × 162.27 s)
备份模式(user=backup)1,146 条、累计 36,520 s ≈ 10.15 h(昨日约 3,000+ 条,环比明显下降,无异常)
数据来源ES mysql_slow-*(@timestamp,UTC+8→UTC 换算)+ MCP 只读 MySQL(describe_schema / explain)
⚠️ 采集链路说明:MCP 服务的 es_slow_logs / es_search 工具当日返回 ES 401(MCP 侧 ES API key 失效),已改用本地 es-query 只读直连 ES 拉取慢日志;MySQL 结构/执行计划仍全程通过 MCP 只读工具(connect → describe_schema → explain → disconnect),未执行任何写操作。

当日画像:Top10 中 9 条为 backup 用户的 mysqldump 全表导出(大结果集传输,非业务故障),1 条(#6)为业务侧 SELECT * FROM price_snapshot 全表导出式查询;真正的业务风险在高频模式——tw591 主库(192.168.8.117)tmp_cvd_t12 去重 SQL 全天 144 次、累计 6.49 h,GetGoldenSourceCommunityIDRepairStreets 288 次、累计 3.24 h;tw8591(192.168.8.27)上 Telescope 长事务写入与 FOR UPDATE 领单精确卡在 300 s(疑似 innodb_lock_wait_timeout),锁等待特征明显。

Top10 明细(按单条耗时)

#耗时(s)库.表行数 sent/examinedBytes_sentuser / server慢因分类
12152.00test.facebook_photo101,727 / 101,72742.7 GBbackup / 117备份导出:大结果集传输(EXPLAIN ALL 全表扫,宽行 SELECT *)
21537.44t8891.t_item_modi_histories5,693,964 / 5,693,96413.9 GBbackup / 84备份导出:大结果集传输(569 万行全表扫)
31205.48t8_game.t8_embeddings_cache79,835 / 79,8352.7 GBbackup / 27备份导出:大结果集传输(含 embedding 宽字段)
41090.84t591_transcription.land_shape_coordinates15,616,508 / 15,616,50811.1 GBbackup / 117备份导出:大结果集传输(1,561 万行)
51082.23t8891.t_sele_item_infos3,290,762 / 3,290,7627.5 GBbackup / 84备份导出:大结果集传输
6934.55price_snapshot(无库名前缀)1,704,410 / 1,704,410221 MBt591 / 117业务查询:大结果集传输 SELECT *(170 万行整表捞取,非备份)
7830.06game.t8_embeddings_cache55,291 / 55,2911.9 GBbackup / 27备份导出:大结果集传输
8809.09t591_new.fetch_data_item398,940 / 398,94022.2 GBbackup / 117备份导出:大结果集传输(平均单行 ~55 KB 超宽行)
9753.31t591_estate_data.rental_market_raw48,006 / 48,00620.4 GBbackup / 117备份导出:大结果集传输(原始 JSON 宽行)
10723.38lighthouse.runs7,753 / 7,7533.8 GBbackup / 84备份导出:大结果集传输
Top10 锁等待占比均 <0.01%(Lock_time ≈ 0.0002~0.07 s),无锁等待型慢查;#1 facebook_photo(10 万行 / 42.7 GB,单行 ~420 KB)建议核查是否存了原图 base64,备份窗口可考虑 --single-transaction 之外限流或排除该测试库。

高频慢查询模式(指纹归一化聚合,4,768 条)

按条数 Top5

#模式(指纹摘要)条数平均(s)最大(s)累计serveruser
1SHOW ENGINE INNODB STATUS1,0211.53—25.9 min117/27_3307/37/40/40_3308jmysql
2GetGoldenSourceCommunityIDRepairStreets(golden_source 3 表 JOIN + GROUP BY)28840.55—3.24 hLAN_addcn_117t591
3CREATE TEMPORARY TABLE tmp_cvd_t1 AS SELECT …(JSON_EXTRACT 展开 viewing_targets)14410.49—25.2 minLAN_addcn_117t591
4CREATE TEMPORARY TABLE tmp_cvd_t12 AS SELECT … house_ep_source_relate NOT EXISTS 去重144162.27—6.49 hLAN_addcn_117t591
5CREATE TEMPORARY TABLE tmp_cvd_t14 AS SELECT … house_source_ep_build_relate1442.03—4.9 minLAN_addcn_117t591

按累计耗时 Top5

#模式条数平均(s)累计serveruser
1tmp_cvd_t12(house_ep_source_relate NOT EXISTS 去重)144162.276.49 hLAN_addcn_117t591
2GetGoldenSourceCommunityIDRepairStreets28840.553.24 hLAN_addcn_117t591
3INSERT INTO telescope_entries … VALUES(Laravel Telescope 写入,longtext content)42265.263.10 hLAN_addcn_27a8591
4INSERT INTO t8_telescope_entries … VALUES(另一 Telescope 库变体)23300.001.92 hLAN_addcn_27a8591
5SELECT * FROM dy_aigc_crawler_runs … FOR UPDATE(领单)18300.001.50 hLAN_addcn_27a8591
备份模式(user=backup,mysqldump 全表导出)已从上表剔除单独标注:全天 1,146 条、累计 10.15 h,Top10 中 9 条由其贡献,单条最慢 35.9 分钟;较前日(约 3,000+ 条)明显减少,属常规备份量级、无环比翻倍异常,不触发深度分析。
SHOW ENGINE INNODB STATUS(1,021 条)为 PMM/监控采集语句,属正常采集成本。
另有 # administrator command: Prepare 模式(55 次 × 71.1 s,累计 65 min)与 Telescope 批处理同源(Prepare 是批量写入的伴随命令),随 Telescope 问题一并处理。

触发深度分析的模式详情

① tmp_cvd_t12 —— 累计 6.49h,全日报最大损耗 ⚠️

  1. 改写为一次性聚合派生表:JOIN (SELECT ep_source_id, MAX(CONCAT(LPAD(score,10,'0'), post_id)) … GROUP BY ep_source_id) 或窗口函数 ROW_NUMBER() OVER (PARTITION BY ep_source_id ORDER BY score DESC, post_id DESC) = 1,把 31.6 万次探测变为一次索引扫描 + 分组;
  2. 增加 updated_at 增量水位,10 分钟窗口只处理增量数据,避免全天 144 次全量重算;
  3. 结果落常规表加 TTL,供下游 tmp_cvd_t14 等复用。

② GetGoldenSourceCommunityIDRepairStreets —— 累计 3.24h ⚠️

  1. 改写为先聚合后 JOIN:用小结果集反连接剔除已删除社区——WHERE gs.community_bid NOT IN (SELECT cb.id FROM … cb JOIN … c WHERE c.deleted_at IS NOT NULL),192 万次点查 → 一次纯索引聚合 + 小反连接,预计 40 s → 1~3 s;
  2. 结果缓存/物化:该统计每 5 分钟跑一次但存量变化远慢于调度,改为 15~30 分钟一次或物化成 golden_source_street_stats 汇总表,288 次→几十次;
  3. 收敛 community_id=0 的 192 万行待修复存量,修复脚本吃完后查询自然变快;
  4. 注意:prod-591/master 上该表尚无 idx_comm_type_street(生产为真全表扫描),如该 SQL 也跑生产需补建。

③ Telescope 长事务写入(telescope_entries / t8_telescope_entries)—— 累计约 6.5h ⚠️

  1. staging 环境直接关闭 Telescope(TELESCOPE_ENABLED=false)或采样模式,一次性消除全天 ~110 次慢写;
  2. 保留则把 prune 改为小批量分片删除(DELETE … LIMIT 1000 循环)+ 避开整点业务高峰,缩小锁范围;
  3. content 落库前截断/压缩,减小行宽与 undo 压力。

④ dy_aigc_crawler_runs … FOR UPDATE —— 18 次 × 300.00s,锁等待 ⚠️

  1. 领单改乐观抢占:UPDATE dy_aigc_crawler_runs SET status='running', worker_id=? WHERE status IN ('waiting','retry_waiting') ORDER BY id LIMIT 1 先到先得、无长持锁,或 MySQL 8 用 FOR UPDATE SKIP LOCKED;
  2. 降低 worker 并发数(当前争抢强度下 18 次超时说明 worker 数 > 待领任务数);
  3. 会话级调低 innodb_lock_wait_timeout 并加重试,避免 300 s 长占连接。

逐条优化建议汇总

优先级对象建议预期收益
P0tmp_cvd_t12 去重 SQL(tw591)反连接改窗口函数/派生表 + updated_at 增量重算全天 -6 h 数据库时间
P0Telescope 写入/清理(tw8591)staging 关闭 Telescope;prune 改分批 DELETE-6.5 h,消除 300 s 锁超时
P1GetGoldenSourceCommunityIDRepairStreets(tw591)改写为先聚合后反连接剔除已删社区;结果物化/降频-3 h/天,单次 40 s→1~3 s
P1dy_aigc_crawler_runs 领单(tw8591)乐观 UPDATE 抢占 / SKIP LOCKED / 降并发-1.5 h,消除锁等待
P2SELECT * FROM price_snapshot(t591 业务用户)排查调用方,改为分页/按需列;170 万行整表拉取应走离线导出消除 Top10 中唯一业务全表扫
P2facebook_photo 等超宽行备份核查 base64 原图存储;备份窗口限流(~10 MB/s)或排除测试库缩短备份窗口、降低 IO 峰值
P3MCP 服务 ES 凭证更新 MCP 服务配置中的 ES API key(当前 401)恢复 es_slow_logs/es_search 工具链

数据来源与生成时间