MySQL 8 慢查询不能复制业务 SQL:如何只读提取脱敏指纹摘要
提供经过 MySQL 8.0/8.4 隔离验证的两张只读 SQL 卡:先核对表与索引目录,再按 24 小时窗口提取 Top 50 脱敏查询指纹;不读取或输出完整业务 SQL。
不能复制客户 SQL 时,先用只读目录卡固定对象边界,再用 performance_schema 摘要卡按 digest、调用次数、耗时和扫描行数排序;结果只用于人工复核,不自动加索引或改参数。
适用对象
- MySQL 8.0/8.4 可先读取表与索引目录,再从 performance_schema 获取最近 24 小时 Top 50 digest 聚合。
- 摘要卡不读取 DIGEST_TEXT,只输出 schema 哈希、digest、调用次数、耗时、扫描行数和最近观察时间。
- `EXPLAIN`用于查看计划;`EXPLAIN ANALYZE`会实际运行语句,生产使用前必须单独评估权限和影响。
- 两张卡均不要求生产密码、完整客户SQL或自动改索引;容器验证不等于客户或生产环境已验证。
READ AND ACT
不必读到文末,现在就可以做下一步
先下载只读工作表或完成 5 分钟自查;只有需要固定范围人工判断时,再查看数据库健康体检。
这些入口不要求提交数据库、SQL、日志或公司信息;服务范围和资料边界以目标页面说明为准。
慢查询排查前,先收集哪几类证据
把业务现象、SQL证据、执行计划、数据库状态和变更时间线放到同一个时间窗。
有效的首轮材料应能回答五个问题:什么时候慢、哪个业务动作受影响、哪类SQL出现、执行计划看到什么、当时数据库和基础资源发生了什么。只有某一项异常,不足以直接推出修改索引或参数。
工作表使用脱敏SQL或SQL指纹。客户名称、订单号、账号、IP、完整业务条件和密码不应进入公开文件;需要原始材料时只保存受控引用。
| 证据组 | 填写内容 | 可以帮助判断 | 不能直接证明 |
|---|---|---|---|
| 业务窗口 | 开始/结束时间、现象、影响范围、基线 | 问题是否集中在特定窗口 | 不能单独定位SQL根因 |
| 慢日志 | 阈值、摘要、耗时、锁、扫描/返回行 | 哪些语句值得进一步复核 | 没有记录不代表没有慢查询 |
| 执行计划 | 访问类型、估算行、实际行边界、临时表/排序 | 优化器如何计划执行 | 不能替代业务语义和负载判断 |
| 数据库状态 | 索引、表规模、统计信息、锁、连接 | 计划和并发是否存在风险信号 | 不能自动授权变更 |
| 资源与变更 | CPU/IO、发布、结构/数据量变化 | 是否存在共同时间线 | 相关不等于因果 |
先只读复核,再决定是否进入变更
先固定时间窗和业务影响,再收集最小证据并核对缺口。若只读材料已能支持候选原因,由DBA或系统负责人评审下一步;涉及实际执行、加索引、更新统计信息、改参数或SQL发布时,必须单独审批和回滚。
慢查询首轮复核五步
- 01
01
固定窗口
记录时区、业务现象、影响对象和近期变更。
- 02
02
脱敏聚合
使用SQL指纹和慢日志摘要,避免复制客户敏感条件。
- 03
03
查看计划
优先使用EXPLAIN;EXPLAIN ANALYZE需评估实际执行风险。
- 04
04
交叉核对
对照索引、统计信息、锁、连接、CPU/IO和数据量。
- 05
05
人工决定
证据不足则补采;证据支持时再提交变更评审。
本流程不自动执行SQL、改索引、更新统计信息、改参数或发布代码。
两步只读路径:先目录,再指纹摘要
两张权威 SQL 卡均在全新 MySQL 8.0.46 与 8.4.10 容器通过隔离合成样例;生产与客户环境仍需单独授权和回读。
第一步 `SQL-MY-02` 只读取一个明确 schema 的表与索引目录,最多 200 行;第二步 `SQL-MY-03` 只读取 performance_schema digest 摘要,固定最近 24 小时和 Top 50。执行前由数据库负责人确认 schema、最小只读权限和 10 秒客户端超时。
`performance_schema` 关闭时,摘要卡返回 `performance_schema_disabled`;权限不足时数据库拒绝;目标 schema 没有窗口内样本时返回空结果。这三种情况不能互相替代,也不能把空结果写成“没有慢查询”。
| 看到什么 | 今天可以做 | 不得直接做 |
|---|---|---|
| 空结果或功能关闭 | 确认采集条件、权限、时间窗与消费者状态,记录证据缺口 | 不得擅自开启日志、消费者或修改实例参数 |
| 少量高耗时 digest | 对照调用次数、扫描行数、业务窗口、索引目录和近期变更 | 不得仅凭排序直接加索引或改 SQL |
| 多个范围同时异常 | 由负责人确认优先级;需要固定范围复核时进入数据库健康体检 | 不得上传客户 SQL、连接串、表名或生产日志到公开入口 |
下载 SQL 卡和合成结果样例
SQL 文件是 inchTraining 权威版本的公开副本;合成 CSV 只用于理解字段,不含客户或生产数据。没有采集条件时应标记“缺失”或“需授权”,不要用推测补齐。需要人工风险分级和整改 Top 5 时,再进入 B-HC 固定范围服务。
本节判断
- 只收集 digest、聚合指标和受控证据引用,不读取完整 SQL 文本。
- EXPLAIN ANALYZE会实际执行语句,不属于默认只读采集步骤。
- B-HC不包含自动调优、生产改库或效果承诺。
参考依据
以下来源用于确认市场趋势、政策背景和术语边界;具体落地方案仍以客户的数据范围、权限和交付目标为准。
常见问题
摘要卡会不会输出完整 SQL、库名或表名?
不会。SQL-MY-03不读取DIGEST_TEXT,schema只输出固定盐SHA-256,结果只包含digest与聚合指标。数据库负责人仍需把下载脚本视为R2只读卡,在授权范围内执行。
performance_schema关闭或没有样本时怎么办?
关闭时返回performance_schema_disabled;目标schema在24小时窗口内没有匹配摘要时返回空结果;权限不足则数据库拒绝。这些状态只能说明当前采集条件,不足以排除慢查询。
看到慢SQL后是否应该先加索引?
不应默认这样做。先核对业务窗口、执行计划、现有索引、表规模、统计信息、写入成本和近期变更,再由负责人决定是否进入变更评审。
EXPLAIN和EXPLAIN ANALYZE有什么执行边界?
EXPLAIN用于查看优化器计划;MySQL 8.4官方文档明确说明EXPLAIN ANALYZE会运行语句并返回实际时间和行数,因此生产使用前必须评估权限、负载和语句副作用。
为什么慢查询日志里没有记录也不能直接排除问题?
慢日志可能未启用,阈值、最小扫描行数或输出位置也可能不同;日志顺序与锁等待边界还会影响解释。应记录采集配置和时间窗。