| 项目 | 值 |
|---|---|
| 统计范围 | 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),锁等待特征明显。
| # | 耗时(s) | 库.表 | 行数 sent/examined | Bytes_sent | user / server | 慢因分类 |
|---|---|---|---|---|---|---|
| 1 | 2152.00 | test.facebook_photo | 101,727 / 101,727 | 42.7 GB | backup / 117 | 备份导出:大结果集传输(EXPLAIN ALL 全表扫,宽行 SELECT *) |
| 2 | 1537.44 | t8891.t_item_modi_histories | 5,693,964 / 5,693,964 | 13.9 GB | backup / 84 | 备份导出:大结果集传输(569 万行全表扫) |
| 3 | 1205.48 | t8_game.t8_embeddings_cache | 79,835 / 79,835 | 2.7 GB | backup / 27 | 备份导出:大结果集传输(含 embedding 宽字段) |
| 4 | 1090.84 | t591_transcription.land_shape_coordinates | 15,616,508 / 15,616,508 | 11.1 GB | backup / 117 | 备份导出:大结果集传输(1,561 万行) |
| 5 | 1082.23 | t8891.t_sele_item_infos | 3,290,762 / 3,290,762 | 7.5 GB | backup / 84 | 备份导出:大结果集传输 |
| 6 | 934.55 | price_snapshot(无库名前缀) | 1,704,410 / 1,704,410 | 221 MB | t591 / 117 | 业务查询:大结果集传输 SELECT *(170 万行整表捞取,非备份) |
| 7 | 830.06 | game.t8_embeddings_cache | 55,291 / 55,291 | 1.9 GB | backup / 27 | 备份导出:大结果集传输 |
| 8 | 809.09 | t591_new.fetch_data_item | 398,940 / 398,940 | 22.2 GB | backup / 117 | 备份导出:大结果集传输(平均单行 ~55 KB 超宽行) |
| 9 | 753.31 | t591_estate_data.rental_market_raw | 48,006 / 48,006 | 20.4 GB | backup / 117 | 备份导出:大结果集传输(原始 JSON 宽行) |
| 10 | 723.38 | lighthouse.runs | 7,753 / 7,753 | 3.8 GB | backup / 84 | 备份导出:大结果集传输 |
Top10 锁等待占比均 <0.01%(Lock_time ≈ 0.0002~0.07 s),无锁等待型慢查;#1 facebook_photo(10 万行 / 42.7 GB,单行 ~420 KB)建议核查是否存了原图 base64,备份窗口可考虑 --single-transaction 之外限流或排除该测试库。
| # | 模式(指纹摘要) | 条数 | 平均(s) | 最大(s) | 累计 | server | user |
|---|---|---|---|---|---|---|---|
| 1 | SHOW ENGINE INNODB STATUS | 1,021 | 1.53 | — | 25.9 min | 117/27_3307/37/40/40_3308 | jmysql |
| 2 | GetGoldenSourceCommunityIDRepairStreets(golden_source 3 表 JOIN + GROUP BY) | 288 | 40.55 | — | 3.24 h | LAN_addcn_117 | t591 |
| 3 | CREATE TEMPORARY TABLE tmp_cvd_t1 AS SELECT …(JSON_EXTRACT 展开 viewing_targets) | 144 | 10.49 | — | 25.2 min | LAN_addcn_117 | t591 |
| 4 | CREATE TEMPORARY TABLE tmp_cvd_t12 AS SELECT … house_ep_source_relate NOT EXISTS 去重 | 144 | 162.27 | — | 6.49 h | LAN_addcn_117 | t591 |
| 5 | CREATE TEMPORARY TABLE tmp_cvd_t14 AS SELECT … house_source_ep_build_relate | 144 | 2.03 | — | 4.9 min | LAN_addcn_117 | t591 |
| # | 模式 | 条数 | 平均(s) | 累计 | server | user |
|---|---|---|---|---|---|---|
| 1 | tmp_cvd_t12(house_ep_source_relate NOT EXISTS 去重) | 144 | 162.27 | 6.49 h | LAN_addcn_117 | t591 |
| 2 | GetGoldenSourceCommunityIDRepairStreets | 288 | 40.55 | 3.24 h | LAN_addcn_117 | t591 |
| 3 | INSERT INTO telescope_entries … VALUES(Laravel Telescope 写入,longtext content) | 42 | 265.26 | 3.10 h | LAN_addcn_27 | a8591 |
| 4 | INSERT INTO t8_telescope_entries … VALUES(另一 Telescope 库变体) | 23 | 300.00 | 1.92 h | LAN_addcn_27 | a8591 |
| 5 | SELECT * FROM dy_aigc_crawler_runs … FOR UPDATE(领单) | 18 | 300.00 | 1.50 h | LAN_addcn_27 | a8591 |
备份模式(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 问题一并处理。
CREATE TEMPORARY TABLE tmp_cvd_t12 AS SELECT a.ep_source_id, a.post_id FROM t591_new.house_ep_source_relate a WHERE a.type = 2 AND NOT EXISTS (SELECT 1 FROM … b WHERE b.type = 2 AND b.ep_source_id = a.ep_source_id AND (b.score > a.score OR (b.score = a.score AND b.post_id > a.post_id)))a 走覆盖索引 idx_type_ep_score_post(type)(ref,仅用到前缀 type),单次扫描 316,562 行,每行触发一次相关子查询探测同索引;query_cost 63,930,data_read 36 MB/JOIN。house_ep_source_relate 已有 (type, post_id)、(type, ep_source_id, score, post_id) 等索引。type=2 分量占该表比重过大,索引区分度失效。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 万次探测变为一次索引扫描 + 分组;updated_at 增量水位,10 分钟窗口只处理增量数据,避免全天 144 次全量重算;SELECT gs.street_id, COUNT(*) FROM t591_estate_data.golden_source gs JOIN t591_new.market_community_building cb ON cb.id = gs.community_bid JOIN t591_new.market_community c ON c.id = cb.community_id AND c.deleted_at IS NULL WHERE gs.community_bid != 0 AND gs.community_id = 0 AND gs.street_id != 0 AND gs.type = 1 GROUP BY gs.street_id ORDER BY gs.street_id LIMIT 5gs 走覆盖索引 idx_comm_type_street(community_id, type, street_id, community_bid) range 扫描(using_index=true,无回表),rows_examined 4,285,534、产出 192 万行;随后 cb/c 对 192 万行逐行 eq_ref 主键点查(cb 侧 data_read ≈ 2G),最后 GROUP BY 聚合。community_id=0 AND type=1 的待修复存量约 192 万行,JOIN cb/c 的唯一目的是剔除已删除社区,却让每行付出两次主键点查;任何索引都无法减少必须聚合的行数。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;golden_source_street_stats 汇总表,288 次→几十次;community_id=0 的 192 万行待修复存量,修复脚本吃完后查询自然变快;prod-591/master 上该表尚无 idx_comm_type_street(生产为真全表扫描),如该 SQL 也跑生产需补建。INSERT INTO telescope_entries (batch_id, content, created_at, family_hash, type, uuid) VALUES (…, '{超长 JSON}', …)(同型多指纹:42 次×265 s、21 次×268 s、10 次×257 s;t8 变体 23 次×300.00 s)。content 为 longtext。telescope:prune(每小时整点,样本可见 01:00:02 调度)大批 DELETE 与写入互锁,prune 长事务持 gap/next-key 锁,业务 INSERT 等锁超时。TELESCOPE_ENABLED=false)或采样模式,一次性消除全天 ~110 次慢写;DELETE … LIMIT 1000 循环)+ 避开整点业务高峰,缩小锁范围;SELECT * FROM dy_aigc_crawler_runs WHERE status IN ('waiting','retry_waiting') AND available_at <= … ORDER BY id ASC LIMIT 1 FOR UPDATE(duyo 库,tw8591)。idx_claim(status, next_retry_at, created_at, id),rows_examined=2——查询本身毫秒级,慢因不是执行计划而是锁:18 次全部精确 300.00 s,多 worker 抢同一条待领记录,FOR UPDATE 互斥直至锁等待超时。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;innodb_lock_wait_timeout 并加重试,避免 300 s 长占连接。| 优先级 | 对象 | 建议 | 预期收益 |
|---|---|---|---|
| P0 | tmp_cvd_t12 去重 SQL(tw591) | 反连接改窗口函数/派生表 + updated_at 增量重算 | 全天 -6 h 数据库时间 |
| P0 | Telescope 写入/清理(tw8591) | staging 关闭 Telescope;prune 改分批 DELETE | -6.5 h,消除 300 s 锁超时 |
| P1 | GetGoldenSourceCommunityIDRepairStreets(tw591) | 改写为先聚合后反连接剔除已删社区;结果物化/降频 | -3 h/天,单次 40 s→1~3 s |
| P1 | dy_aigc_crawler_runs 领单(tw8591) | 乐观 UPDATE 抢占 / SKIP LOCKED / 降并发 | -1.5 h,消除锁等待 |
| P2 | SELECT * FROM price_snapshot(t591 业务用户) | 排查调用方,改为分页/按需列;170 万行整表拉取应走离线导出 | 消除 Top10 中唯一业务全表扫 |
| P2 | facebook_photo 等超宽行备份 | 核查 base64 原图存储;备份窗口限流(~10 MB/s)或排除测试库 | 缩短备份窗口、降低 IO 峰值 |
| P3 | MCP 服务 ES 凭证 | 更新 MCP 服务配置中的 ES API key(当前 401) | 恢复 es_slow_logs/es_search 工具链 |
mysql_slow-*(@timestamp 过滤 2026-09-08T00:00:00+08:00 ~ 2026-09-09T00:00:00+08:00,共 4,768 条,es-query 只读直连);MySQL 结构与执行计划经 MCP 只读工具(connect / describe_schema / explain / find_instance / search_schema / disconnect,实例 staging/tw591、staging/tw8591 等),全程未执行任何写库、kill 或配置变更。.agents/scripts/slow_report_20260908_run.py,中间数据 outputs/slow_report_20260908.json。