跳转到正文
文章目录

阶段一:扫描现有数据库

P1-01 全库结构扫描

</> TEXT
你是一位资深数据库架构师。

请对以下数据库进行完整结构扫描,输出一份详尽的现状报告。

【数据库信息】
- 数据库类型:{{DB_TYPE}}(如 MySQL 8.0 / PostgreSQL 15 / MongoDB 7)
- 连接方式 / DDL 来源:{{DDL_SOURCE}}
- 业务领域:{{BUSINESS_DOMAIN}}

【扫描要求】
1. 表清单:所有表名 + 行数估算 + 创建时间(如可获取)
2. 字段详情:每张表的字段名、类型、是否 NULL、默认值、注释
3. 索引清单:主键、唯一索引、普通索引、全文索引
4. 外键 & 约束:所有外键关系,绘制依赖图(Mermaid ERD 格式)
5. 存储过程 & 触发器:名称、触发时机、核心逻辑摘要
6. 视图清单:视图名称及其 SELECT 逻辑摘要

【输出格式】
- 用 Markdown 表格展示表/字段信息
- 用 Mermaid erDiagram 展示 ER 图
- 在报告末尾附上"扫描摘要"(总表数、总字段数、最大表、冗余表候选)

变量说明:{{DB_TYPE}} · {{DDL_SOURCE}}(粘贴 DDL 或上传文件)· {{BUSINESS_DOMAIN}}


P1-02 数据量 & 增长趋势分析

</> TEXT
你是一位数据库性能专家。

基于以下数据量统计,为我的数据库进行容量分析。

【输入数据】
{{TABLE_SIZE_STATS}}
(粘贴 information_schema 查询结果 或 mongostats 输出)

【分析维度】
1. 大表识别:列出 TOP 10 大表(按行数 & 存储大小)
2. 增长预测:基于历史数据估算 6/12/24 个月后的规模
3. 热点表:结合读写频率(如有 slow log / APM 数据 {{SLOW_LOG}})
4. 分区建议:哪些表适合按时间/范围/哈希分区?
5. 归档候选:哪些表的历史数据可安全归档?

【输出格式】
- Markdown 表格 + 增长折线图 ASCII 示意
- 输出"容量风险评级"(🔴高 / 🟡中 / 🟢低)

变量说明:{{TABLE_SIZE_STATS}} · {{SLOW_LOG}}(可选)


P1-03 依赖关系 & 调用链扫描

</> TEXT
你是一位代码审计专家。

请分析以下代码仓库/SQL 调用记录,输出数据库依赖图谱。

【输入材料】
- 代码路径 / 关键 SQL 片段:{{CODE_OR_SQL_SNIPPETS}}
- 服务清单:{{SERVICE_LIST}}

【分析目标】
1. 表-服务矩阵:哪些服务读写哪些表(矩阵热力图 ASCII)
2. 高耦合表:被 3 个以上服务写入的表(重构高风险)
3. 孤立表:从未被查询的表(候选废弃)
4. 跨库 JOIN:列出所有跨库/跨服务联表查询
5. 隐式依赖:通过配置/硬编码表名引用的情况

【输出】
Mermaid flowchart 展示服务→表的调用关系。
给出"重构影响评分"(每张表影响的服务数 × 调用频率权重)。

变量说明:{{CODE_OR_SQL_SNIPPETS}} · {{SERVICE_LIST}}


阶段二:分析现有问题

P2-01 反范式 & 冗余问题诊断

</> TEXT
你是一位数据库规范化专家(精通 1NF/2NF/3NF/BCNF)。

请对以下 Schema 进行规范化审计:

【Schema 输入】
{{SCHEMA_DDL}}

【诊断清单】
□ 是否存在多值字段(逗号分隔存多值 → 违反 1NF)
□ 是否存在部分依赖(复合主键中字段只依赖部分键 → 违反 2NF)
□ 是否存在传递依赖(非键字段依赖另一个非键字段 → 违反 3NF)
□ 是否存在重复计算字段(如 total_price = quantity × unit_price)
□ JSON/TEXT 字段中是否隐藏了结构化数据

【输出格式】
对每个问题:
- 问题描述:具体表名.字段名 + 违反哪条规范
- 影响评估:导致什么数据异常(插入/更新/删除异常)
- 改造方案:给出重构后的 DDL(CREATE TABLE ...)
- 迁移 SQL:从旧结构迁移到新结构的 INSERT/UPDATE 语句

变量说明:{{SCHEMA_DDL}}


P2-02 性能问题诊断

</> TEXT
你是一位 SQL 性能调优专家。

请分析以下慢查询,输出优化报告。

【慢查询列表】
{{SLOW_QUERIES}}

【EXPLAIN 输出(如有)】
{{EXPLAIN_OUTPUT}}

【分析维度】
1. 全表扫描识别:type=ALL 的查询,说明缺少哪个索引
2. 索引失效原因:函数包裹/隐式转换/最左匹配失效等
3. N+1 查询识别:循环中的重复查询模式
4. 大事务识别:长时间持锁的操作
5. 优化建议:
   - 推荐创建的复合索引(含字段顺序理由)
   - 可改写为 JOIN 的子查询
   - 可用物化视图/缓存层替代的高频查询

输出每条慢查询的"优化前 vs 优化后"对比。

变量说明:{{SLOW_QUERIES}} · {{EXPLAIN_OUTPUT}}


阶段三:设计新架构

P3-01 新 Schema 设计

</> TEXT
你是一位数据库架构设计专家。

请基于以下约束,设计全新的数据库 Schema。

【业务背景】
{{BUSINESS_REQUIREMENTS}}

【现有问题清单(来自阶段二分析)】
{{ISSUES_LIST}}

【设计约束】
- 目标数据库:{{TARGET_DB}}
- 预期 QPS:{{EXPECTED_QPS}}
- 数据规模:{{DATA_SCALE}}
- 是否分库分表:{{SHARDING_REQUIRED}}

【设计要求】
1. 命名规范:统一的表名/字段名规则(snake_case,含通用字段:id/created_at/updated_at/deleted_at)
2. 主键策略:自增 vs UUID vs 雪花 ID,给出理由
3. 软删除设计:deleted_at 字段策略 + 索引考量
4. 审计字段:created_by/updated_by 的设计
5. JSON 字段使用规范:哪些场景允许 JSON,哪些必须规范化

【输出】
- 完整的 CREATE TABLE DDL(含注释)
- Mermaid ERD 图
- 设计决策记录(ADR 格式:背景/决策/后果)

变量说明:{{BUSINESS_REQUIREMENTS}} · {{ISSUES_LIST}} · {{TARGET_DB}} · {{EXPECTED_QPS}} · {{DATA_SCALE}} · {{SHARDING_REQUIRED}}


P3-02 分库分表策略设计

</> TEXT
你是一位分布式数据库专家(熟悉 ShardingSphere / Vitess / TiDB)。

请为以下场景设计分库分表方案。

【目标表信息】
- 表名:{{TABLE_NAME}}
- 当前行数:{{CURRENT_ROWS}}
- 月增量:{{MONTHLY_GROWTH}}
- 主要查询模式:{{QUERY_PATTERNS}}

【设计要点】
1. Sharding Key 候选分析:列出 3 个候选字段,分析各自的数据分布均匀性
2. 分片数量计算:基于数据量 + 单片上限推算初始分片数及扩容方案
3. 路由规则:Hash 分片 vs Range 分片 vs List 分片的取舍
4. 跨片问题处理:
   - 跨片聚合查询方案
   - 跨片事务方案(2PC / Saga / 补偿)
   - 全局唯一 ID 方案
5. 读写分离:主从架构设计

【输出】
分片配置示例(YAML 或 SQL 注解格式)+ 风险清单

变量说明:{{TABLE_NAME}} · {{CURRENT_ROWS}} · {{MONTHLY_GROWTH}} · {{QUERY_PATTERNS}}


阶段四:迁移策略

P4-01 零停机迁移方案

</> TEXT
你是一位专注于在线迁移的数据库工程师。

请为以下迁移场景设计零停机方案。

【迁移背景】
- 源表结构:{{SOURCE_SCHEMA}}
- 目标表结构:{{TARGET_SCHEMA}}
- 业务 SLA:停机时间上限 {{MAX_DOWNTIME}}(如:0s / 30s / 5min)
- 日均写入量:{{DAILY_WRITES}}

【迁移步骤设计】

Phase 1 - 准备(不影响线上)
□ 创建新表(含所有索引)
□ 建立增量同步通道(binlog / CDC / trigger)

Phase 2 - 全量迁移(后台静默)
□ 分批 INSERT INTO new_table SELECT ...(batch_size={{BATCH_SIZE}})
□ 限速策略(避免主库压力)
□ 进度监控 SQL

Phase 3 - 双写追增量
□ 应用层同时写旧表 + 新表的代码改造点
□ 数据一致性校验方案

Phase 4 - 读流量切换
□ 灰度放量策略(1% → 10% → 50% → 100%)
□ 快速回滚开关设计

Phase 5 - 旧表下线
□ 旧表重命名为 _deprecated_xxx
□ 观察期(建议 7 天)后删除

【输出】
每个 Phase 的具体 SQL + 应用代码改造点 + 预估耗时。

变量说明:{{SOURCE_SCHEMA}} · {{TARGET_SCHEMA}} · {{MAX_DOWNTIME}} · {{DAILY_WRITES}} · {{BATCH_SIZE}}


P4-02 迁移脚本生成

</> TEXT
你是一位精通 SQL 脚本编写的数据库工程师。

请生成以下迁移场景的完整脚本(含错误处理 & 断点续传)。

【迁移任务】
从 {{SOURCE_TABLE}} 迁移到 {{TARGET_TABLE}}
字段映射关系:
{{FIELD_MAPPING}}
(格式:旧字段 -> 新字段,如:user_name -> username,status_code -> is_active (status_code=1))

【脚本要求】
1. 分批处理:每批 {{BATCH_SIZE}} 条,用 WHERE id > last_id AND id <= last_id+batch_size
2. 进度记录:写入 migration_progress 表(table_name, last_id, batch_count, updated_at)
3. 断点续传:脚本启动时从 migration_progress 读取上次进度
4. 数据校验:每批次迁移后,对比源/目标行数 + checksum
5. 限速控制:批次间 SLEEP({{SLEEP_MS}}/1000) 避免压垮主库
6. 错误日志:失败记录写入 migration_errors 表

输出:可直接执行的 SQL 脚本(MySQL / PostgreSQL,按 {{DB_TYPE}} 适配语法)

变量说明:{{SOURCE_TABLE}} · {{TARGET_TABLE}} · {{FIELD_MAPPING}} · {{BATCH_SIZE}} · {{SLEEP_MS}} · {{DB_TYPE}}


阶段五:验证与回滚

P5-01 数据一致性验证

</> TEXT
你是一位数据质量工程师。

请为以下迁移生成完整的数据一致性验证方案。

【对比目标】
- 源表:{{SOURCE_TABLE}}
- 目标表:{{TARGET_TABLE}}
- 业务关键字段:{{KEY_FIELDS}}

【验证层级】

Level 1 - 数量验证
SELECT COUNT(*) 对比(含按时间段分片验证)

Level 2 - 校验和验证
对关键字段计算 MD5/CRC32 聚合校验和

Level 3 - 采样验证
随机抽取 1000 条记录,逐字段比对

Level 4 - 业务逻辑验证
验证以下业务不变量(需根据 {{BUSINESS_INVARIANTS}} 定制):
- 外键引用完整性
- 金额/数量字段总和一致
- 状态枚举值合法性

Level 5 - 差异报告
生成 diff 报告:仅在源表/仅在目标表/数据不一致的记录

【输出】
可直接执行的验证 SQL 脚本 + 自动化检查脚本(Python / Shell)。
最终输出"通过/失败"的检查清单(Markdown 格式)。

变量说明:{{SOURCE_TABLE}} · {{TARGET_TABLE}} · {{KEY_FIELDS}} · {{BUSINESS_INVARIANTS}}


P5-02 回滚预案设计

</> TEXT
你是一位 SRE 工程师,专注于数据库变更安全。

请为以下迁移计划设计完整的回滚预案。

【迁移计划概述】
{{MIGRATION_PLAN_SUMMARY}}

【回滚预案要求】
对每个迁移阶段,定义:

| 阶段 | 回滚触发条件 | 回滚操作 | 预计恢复时间 |
|------|------------|---------|------------|

触发条件示例:
- 错误率上升 > 0.1%
- P99 延迟增加 > 50ms
- 数据校验失败
- 业务告警触发

回滚操作要求:
1. 应用层回滚:Feature Flag 关闭双写,切回旧表读
2. 数据层回滚:将迁移后新增数据同步回旧表的 SQL
3. 中间件层回滚:连接池/读写分离配置回退

【监控指标清单】
列出迁移期间必须监控的关键指标(Grafana 面板 / 告警规则配置)

【演练计划】
建议在正式迁移前如何在测试环境模拟回滚演练。

输出格式:Runbook(标准操作手册)Markdown 格式。

变量说明:{{MIGRATION_PLAN_SUMMARY}}

评论

搜索站内内容

输入关键词开始搜索