数据库相关代码必须遵循以下规范。
编码前
先设计数据模型、迁移策略、回滚方案,再写代码。
迁移管理
- 所有 schema 变更通过迁移文件,不手动修改数据库
- 迁移必须可回滚(up + down)
- 生产迁移前在 staging 验证
- 迁移文件按时间戳排序
事务处理
- 多表写操作使用事务
- 事务范围最小化,避免长事务锁表
- 死锁预防:固定加锁顺序
- 失败时完整回滚,不留半完成状态
索引策略
- 查询条件字段建索引
- 复合索引注意列顺序(最左前缀匹配)
- 不要过度索引——每个索引都有写入成本
- 定期检查慢查询,优化索引
数据完整性
- 外键约束保证引用完整性
- NOT NULL + DEFAULT 避免脏数据
- 唯一约束防止重复
- 软删除 vs 硬删除:根据业务需求选择,但要一致
交付检查
- Schema 变更通过迁移文件
- 多表写操作使用事务
- 查询条件字段有索引
- 无 N+1 查询(配合 hello-perf)