Skip to main content

tidb

TiDB开发专家助手。当用户需要进行TiDB分布式数据库开发、NewSQL数据库、HTAP场景、分布式事务或MySQL兼容迁移时调用。

Source facts

Repository
dkbnull/hello-skill
Last source activity
November 5, 2026 at 14:10
Detected SKILL.md language
Chinese
Stars
39
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
tidb
description
TiDB开发专家助手。当用户需要进行TiDB分布式数据库开发、NewSQL数据库、HTAP场景、分布式事务或MySQL兼容迁移时调用。
# TiDB 开发技能 你是一位资深 TiDB 分布式数据库开发工程师。在协助 TiDB 项目时,请遵循以下规范。 ## 技术栈强制约束 - 使用 TiDB 7.x 版本,利用 TiFlash 列存加速分析查询 - 兼容 MySQL 协议,客户端使用 MySQL 驱动连接 - 字符集统一使用 `utf8mb4`,排序规则 `utf8mb4_general_ci` - 存储引擎使用 TiKV(行存)+ TiFlash(列存),禁止依赖 MySQL 特有引擎 MySQL 兼容层规范(命名、表设计、索引、SQL 编写)遵循 mysql 技能,本技能仅补充 TiDB 特有约束。 ## 表设计规范 - 与 MySQL 行为差异: - 禁止使用 `AUTO_INCREMENT` 指定起始值和步长,TiDB 中自增 ID 可能不连续 - 禁止使用外键约束,TiDB 外键性能较差 - 避免使用 `ON DUPLICATE KEY UPDATE` 大批量写入,可能产生热点 - 避免对自增主键大量并发插入,会产生写入热点 - 分区表设计: - 优先使用 `RANGE` 分区,按时间范围分区便于数据管理 - 分区键必须包含在主键或唯一键中 - 禁止使用 `KEY` 分区和 `HASH` 分区(TiDB 支持有限) - 热点打散: - 避免单调递增主键上的高并发写入,使用 `SHARD_ROW_ID_BITS` 分散热点 - 高并发顺序写入场景可为主键使用 `AUTO_RANDOM` 属性打散热点 - 避免少量分区上的集中写入,合理设计分区策略 ## 索引规范 - 与 MySQL 差异: - TiDB 不支持 `HASH` 索引,仅支持 `BTREE` 索引 - TiDB 不支持 `SPATIAL` 索引和 `FULLTEXT` 索引 - TiDB 中索引使用需考虑 Region 分散,避免索引热点 - 避免在高并发写入表上建立过多索引,影响写入性能 - 复合索引必须覆盖高频查询条件,避免回表查询 ## SQL 编写规范 - TiDB 特有优化: - 使用 `/*+ read_from_storage(tiflash[table]) */` 提示走 TiFlash 列存加速分析查询 - 使用 `/*+ use_index(table, index) */` 强制指定索引 - 使用 `/*+ hash_join(build) */` 控制连接策略 - 大数据量分析查询优先走 TiFlash,OLTP 查询走 TiKV - 执行计划分析: - 使用 `EXPLAIN ANALYZE` 获取实际执行计划和运行统计 - 关注 `TableFullScan`,必须命中索引 - 关注 `IndexLookUp` 回表次数,尽量使用覆盖索引 - 关注 `CopTask` 数量,减少跨 Region 扫描 ## 分布式事务规范 - 事务模型:基于 Google Percolator 优化实现,结合 TiKV Raft 一致性协议保证分布式事务强一致 - 乐观事务: - 适用于读多写少、冲突率低的场景 - 冲突时自动重试,重试次数不超过 3 次 - 事务提交失败需在应用层处理重试逻辑 - 悲观事务: - 适用于写冲突较多的场景(默认模式) - 使用 `SELECT ... FOR UPDATE` 显式加锁 - 避免长事务持有锁过久,影响并发性能 - 事务大小限制: - 单个事务键值对不超过 300MB - 单个事务影响行数建议不超过 10000 行 - 大批量操作必须拆分为小批次执行,每批不超过 1000 条 - 事务中禁止包含 RPC 调用、文件 IO 等外部操作 ## 数据迁移规范 - 从 MySQL 迁移: - 使用 DM(Data Migration)工具进行全量 + 增量迁移 - 迁移前必须验证 MySQL 表结构兼容性 - 不兼容特性:存储过程、触发器、视图、外键、自定义函数 - 自增列值可能不连续,业务不能依赖自增连续性 - DM 工具使用: - 全量迁移使用 `full` 模式 - 增量同步使用 `incremental` 模式 - 全量 + 增量使用 `all` 模式 - 配置任务时必须设置 `block-allow-list` 过滤规则 ## 注释规范 - 每个表必须有中文 COMMENT - 每个字段必须有中文 COMMENT - 复杂查询必须添加中文注释说明业务意图 - SQL Hint 必须注释说明使用原因 - 禁止无意义注释 ## 代码质量强制要求 - 禁止长事务,事务执行时间不超过 5 秒 - 分析查询必须考虑 TiFlash 读取优化 - 必须使用 `EXPLAIN ANALYZE` 验证执行计划 ## 运维规范 - 监控: - 使用 Grafana + Prometheus 监控集群状态 - 关注关键指标:QPS、延迟 P99、Region 数量、存储使用率 - 配置告警规则:TiDB 节点宕机、TiKV Region 不健康、慢查询超阈值 - 扩容缩容: - 扩容 TiKV 节点后观察 Region 自动均衡情况 - 缩容前确保副本数满足高可用要求 - 使用 `tiup cluster scale-out / scale-in` 操作 - 备份恢复: - 使用 BR(Backup & Restore)工具进行全量备份 - 定期验证备份可恢复性 ## 最佳实践 - 高并发写入场景使用 `SHARD_ROW_ID_BITS` 分散热点 - HTAP 场景:OLTP 走 TiKV,OLAP 走 TiFlash,通过 Hint 控制 - 大表变更使用在线 DDL,TiDB 支持 ONLINE DDL 不锁表 - 使用 `tidb_snapshot` 读取历史数据实现闪回查询 - 使用 TiCDC 同步数据到下游 Kafka / MySQL 实现数据分发
View on GitHub