MySQL 慢查询日报 2026-08-27

统计范围:2026-08-27 00:00:00 ~ 23:59:59(Asia/Shanghai)|环境:staging|数据来源:ES 慢日志(MCP es_slow_logs,按 @timestamp 过滤)

一、统计概览

指标数值
慢查询总数(昨日全天)1,306 条
涉及实例staging/tw8591(192.168.8.27:3306,LANaddcn27)
最长单条耗时1,107.08 s(≈18.5 分钟)
Top10 耗时区间300.00 s ~ 1,107.08 s
慢因分类大结果集传输 2 条(backup 全表导出);锁等待超时 8 条(telescope_entries INSERT 精确卡 300.00 s)

Top10 分布: 2 条 mysqldump 备份全表 SELECT *(t8_embeddings_cache,含宽 JSON 向量列);8 条 Laravel Telescope 写入 telescope_entries 的 INSERT,全部精确停在 300.002 s —— 典型 InnoDB 锁等待超时(innodb_lock_wait_timeout=300)特征,非执行慢。

二、Top10 明细

#Query_time(s)Lock_time(s)Rows_examinedRows_sent用户库SQL 摘要慢因类型
11107.080.00021179,83579,835backupa8591SELECT /*!40001 SQL_NO_CACHE */ * FROM t8_game.t8_embeddings_cache大结果集传输
2788.250.00040655,29155,291backupt8_yySELECT /*!40001 SQL_NO_CACHE */ * FROM game.t8_embeddings_cache大结果集传输
3300.00290.00000000a8591t8_extendsINSERT INTO telescope_entries (...) (batch a2989dcd…)锁等待超时
4300.00280.00000000a8591t8_extendsINSERT INTO telescope_entries (...) (batch a2989dcd…)锁等待超时
5300.00280.00000000a8591t8_extendsINSERT INTO telescope_entries (...) (batch a2989d74…)锁等待超时
6300.00280.00000000a8591t8_extendsINSERT INTO telescope_entries (...) (batch a2989d74…)锁等待超时
7300.00250.00000000a8591t8_extendsINSERT INTO telescope_entries (...) (batch a2989e28…)锁等待超时
8300.00210.00000000a8591t8_extendsINSERT INTO telescope_entries (...) (batch a2989d73…)锁等待超时
9300.00190.00000000a8591t8_extendsINSERT INTO telescope_entries (...) (batch a2989d73…)锁等待超时
10300.00180.00000000a8591t8_extendsINSERT INTO telescope_entries (...) (batch a2989d73…)锁等待超时

三、逐条分析与优化建议

1–2. backup 全表导出 t8_embeddings_cache(1,107 s / 788 s)

证据(只读核验):

结论: 非缺索引——备份语句无 WHERE 条件,必然全表扫描。慢因是大结果集传输:每行携带 JSON 向量(约 1KB/行),7 万+ 行串行读出耗时 18 分钟。

建议:

  1. vector 列可压缩存储或迁移到向量库/对象存储,减少 dump 体积(长期方案)。
  2. 备份改用 mysqldump --single-transaction --quick --skip-lock-tables,或对这张缓存表 排除备份(--ignore-table)——它是可重建的缓存,重建成本低。
  3. 错峰:避开业务批处理时间窗;staging 库可拉长备份周期。

3–10. telescope_entries INSERT 精确 300.00 s 超时(8 条)

证据:

结论: 锁等待(唯一键冲突 + 并发重复写入),索引与表结构无问题。

建议:

  1. staging 关闭 Telescope(TELESCOPE_ENABLED=false)或改用 redis watcher 驱动,避免调试数据直写 MySQL——这是最直接的止血方案。
  2. 若需保留 DB 驱动:排查为何同一批次重复提交(队列重试/超时重发),在应用侧做幂等(INSERT ... ON DUPLICATE KEY UPDATE 或写入前去重)。
  3. 保留 telescope:prune 定时清理;可评估把 innodb_lock_wait_timeout 在 staging 调低(如 30 s),让失败快速暴露而非挂 5 分钟。

优先级排序

  1. 🔴 Telescope 写入超时(8 条,staging 应用可观测性受损)→ 关闭/改驱动,当天可落地。
  2. 🟡 备份导出 2 条 → 缓存表排除备份,下一个备份窗口生效。
  3. 🟢 表结构/索引层面昨日 Top10 无需改动。

四、数据来源与生成时间