首页/开发/系统分析与架构设计速查/可串行化(Serializability)

可串行化(Serializability)

事务隔离的最高级别:并发事务的执行结果等价于某种串行执行顺序;它保证多对象事务的正确性,但通常伴随吞吐下降或冲突重试。

与线性一致对比可串行化约束事务等价串行;线性一致约束单对象实时顺序
实现方式两阶段锁、乐观并发控制、串行图检测
代价冲突时阻塞或重试,吞吐受影响

隔离级别与典型异常

级别可能异常适用场景
读已提交不可重复读、写偏斜一般业务查询
可重复读写偏斜、幻读(视实现而定)多数交易类业务
可串行化无(代价是冲突重试)账务、库存等强约束场景
多数业务只需“可串行化的子集”(如快照隔离加约束检查),不必默认使用最高级别。

易错点

  • 使用快照隔离却按可串行化理解,写偏斜类问题未被覆盖
  • 出现序列化冲突后无重试策略,业务随机失败

数据来源与参考

  • 《数据密集型应用系统设计》(Kleppmann,O'Reilly)第 7 章
  • PostgreSQL 文档:Transaction Isolation
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌