正在读取本机记录…
拓展技术沟通◷ 55 分钟

事务、索引、一致性与数据迁移

理解数据正确性、查询性能和版本变化的代价。

学完你能做到
  • 用自己的话解释“事务、索引、一致性与数据迁移”及其核心术语。
  • 在真实 AI 产品场景中识别何时应该使用本课方法。
  • 完成一份可沉淀进“系统关系图、一次 API 调用与基础 SQL 练习”阶段任务的实践产出。
前置与关联课程

完成阶段 2 的能力检查,或先预览相关基础课

01

REAL SCENE

先从一个真实场景开始

!

两个用户同时购买最后一件库存,系统都先读到库存为 1 并分别扣减;另一个页面因缺少索引查询超时。团队准备新增非空字段,却没有给历史数据回填。事务、索引、一致性和迁移会直接影响资金、库存和上线安全。

02

PLAIN EXPLANATION

说人话:它到底是什么?

事务把一组读写视为一个整体,要么全部成功要么回滚,并在并发下维持业务约束。索引像按特定字段建立的目录,能加速查询但占空间并增加写入成本。一致性表示不同操作和副本观察到的数据满足约定,不等于所有系统必须瞬时同步。数据迁移是结构或数据规则的版本变化,需要兼容旧代码、回填、校验和回滚。

01

事务与并发约束

支付、余额和库存需要把校验与写入放在受保护的事务中,通过锁、条件更新或唯一约束处理竞争。单机测试通过并不代表并发安全,重复请求还需幂等。

  • 业务不变量写成数据库约束
  • 冲突返回明确可恢复结果
  • 高风险链路做并发测试
02

索引与查询代价

索引适合高频筛选、关联和排序字段,复合索引顺序取决于真实查询。索引不是越多越好:每次写入都要维护,低选择性或从不使用的索引可能只增加成本。

  • 从慢查询与访问模式出发
  • 使用执行计划验证效果
  • 上线后监控写入和存储变化
03

兼容迁移与回滚

安全迁移通常先新增兼容结构,再双读写或回填验证,最后切换并清理旧字段。大表变更要分批、限速和监控;回滚代码不一定能回滚已写入的新数据。

  • 迁移脚本可重复且可观测
  • 历史数据定义默认与异常处理
  • 发布步骤与数据步骤分开记录
01

关键数据用事务、约束和幂等守住业务不变量。

02

索引由真实查询驱动,并评估读、写和存储权衡。

03

数据迁移采用兼容、回填、验证、切换、清理的渐进步骤。

03

KEY POINT

这节课最重要的结论

核心重点
涉及余额、库存、权限等关键数据时,一致性优先级高于局部速度。
为什么重要
这决定了听懂工程语言、阅读接口和数据库方案,并判断技术取舍时,团队是否拥有一致、可验证的判断标准。
适用边界
当问题目标、数据来源或失败成本发生变化时,不要机械套用;先重新确认假设和风险等级。
04

EXAMPLES

正确案例与常见反例

✓ 正确做法

库存扣减使用条件更新保证 stock > 0,并以订单幂等键防重复;失败返回售罄而非负库存。慢查询基于执行计划增加匹配索引。新增字段先可空上线,分批回填并核对数量,代码兼容新旧字段,稳定后再加非空约束。

× 常见误区

应用先查库存再单独写减一,没有事务或条件;支付重试生成重复订单。为所有列盲目加索引导致写入变慢。发布时直接给亿级表加非空字段并锁表,历史记录没有值,生产服务长时间不可用。

和工程师这样沟通

“库存不变量是不能小于零,请用事务内条件更新并配合订单幂等键,补充并发测试。字段迁移分新增可空、分批回填、双版本验证、切换与加约束,给出每步监控、停止条件和数据回滚方案。”

05

HANDS-ON

必做实操任务

本节产出:“系统关系图、一次 API 调用与基础 SQL 练习”阶段任务中的《事务、索引、一致性与数据迁移》一页实践卡

  1. 步骤 1为余额、库存或名额写出必须始终成立的业务不变量。

  2. 步骤 2模拟两个并发请求,找出先读后写造成竞争的位置并设计保护。

  3. 步骤 3从一个查询的筛选、关联与排序字段提出索引假设和验证指标。

  4. 步骤 4设计新增必填字段的兼容发布、历史回填、校验、切换和回滚步骤。

○
实践完成度 0/4

实践结果会自动保存在本机,并进入项目工坊的任务来源。

关键数据变更评审表业务对象:____ 必须保持的不变量:____ 并发场景:请求 A____ 请求 B____ 风险步骤:____ 事务/原子更新:____ 唯一或检查约束:____ 幂等键:____ 冲突用户反馈:____ 查询模式:筛选____ JOIN____ 排序____ 索引假设与写入代价:____ 迁移步骤:新增____ 回填____ 验证____ 切换____ 清理____ 监控与停止条件:____ 代码回滚:____ 数据恢复:____
06

CHECKLIST

产品经理工作检查表

07

MASTERY QUIZ

掌握测验

达到 60% 即可完成本课。

1事务对关键业务最主要的价值是什么?
2为什么索引不是越多越好?
3新增非空字段的安全常见顺序是什么?
08

INTERVIEW

常见面试题

数据迁移为什么是产品风险,你会如何参与评审?
展开参考回答

迁移可能锁表、破坏兼容、丢失历史或让代码回滚却无法恢复数据。产品经理应明确业务不变量、历史数据语义、停机容忍、用户影响和验收;推动采用新增兼容结构、分批回填、数量与抽样校验、双版本切换、监控停止条件,并分别准备代码回滚和数据恢复方案。

09

RECAP & FURTHER READING

重点回顾、延伸阅读与下一步

一句话回顾涉及余额、库存、权限等关键数据时,一致性优先级高于局部速度。
  1. 1

    围绕“事务、索引、一致性与数据迁移”继续阅读:查阅对应技术的官方入门文档,重点核对输入输出、失败方式、权限边界与可观测性。

  2. 2

    用“事务、索引、数据迁移”作为检索词,分别写下一条定义、一条适用边界和一个反例。

  3. 3

    对照本课正确案例与反例,寻找一个公开案例并记录其中可复用的判断与不能照搬的条件。