首页/开发/系统分析与架构设计速查/事务隔离级别与异常现象

事务隔离级别与异常现象

SQL 标准定义四个隔离级别:读未提交、读已提交、可重复读、可串行化,用于控制脏读、不可重复读与幻读;各数据库的具体实现与标准描述存在差异。

级别

级别脏读不可重复读幻读
读未提交可能可能可能
读已提交不可能可能可能
可重复读不可能不可能可能(取决于实现)
可串行化不可能不可能不可能
不同数据库对“可重复读”的实现不同(如快照隔离),排查并发问题时须以所用数据库文档为准。

易错点

  • 默认级别下库存扣减未加锁,出现超卖
  • 以为可重复读就等同于可串行化,写偏斜未被发现

数据来源与参考

  • ISO/IEC 9075 SQL 标准隔离级别定义
  • PostgreSQL 文档:Transaction Isolation
  • MySQL 8.0 Reference Manual:InnoDB 事务隔离级别
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌