行、列、索引和事务,决定系统能不能问出正确的答案。
页面可以重做,缓存可以清空,表里的数据却要活得比功能更久。用户、订单、库存、日志,一旦字段含义含糊,后面的统计和客服工单都会跟着含糊。
| # | 对象 | 说明 |
|---|---|---|
| 1 | 主键与约束 | 每一行都该能被唯一找到。非空、唯一、外键不是手续,是防止脏数据混进来的栅栏。 |
| 2 | 索引 | 索引让查找走捷径,也会让写入变慢。按真实查询建,不要给每一列都加一份“以防万一”。 |
| 3 | 事务 | 下单减库存必须同时成功或同时失败。提交前看见的中间态,不该被另一笔订单读走。 |
| 4 | 查询形状 | 过滤、排序、分页、关联,是列表接口的四件套。慢查询往往不是 SQL 太长,而是扫描了不该扫描的行。 |
| 5 | 备份与变更 | 结构变更要可回放,备份要真的能恢复。只在生产里手改一列,下一次发布就会对不上。 |