• 读未提交(Read Uncommitted) # 读其它事务未提交的数据
    • 现象
      • 不允许更新丢失
      • 允许脏读(dirty read) # 事务中读到不存在数据, 是其它事务修改中的数据
    • 原理
      • 可同时读
      • 不同时写,多事务写
    • 实现
      • 排他写锁
  • 读提交(Read Committed) # 读其它事务提交的数据
    • 现象
      • 不允许脏读
      • 允许不可重复读(nonRepeatable read) # 事务中前后查询不一致
    • 原理
      • 可同时读
      • 单事务写
    • 实现
      • 瞬间共享读锁
      • 排他写锁
  • 可重复读(Repeatable Read) # 读到的数据加锁,解决不可重复读问题
    • 现象
      • 不允许脏读
      • 不允许不可重复读
      • 允许幻读(phantom read) # 事务中存在未生效行,是其它事务的插入或删除
    • 原理
      • 读到的数据(加锁)不写
      • 单事务写
    • 实现 # 读涉及范围加锁
      • 共享读锁
      • 排他写锁
  • 序列化(Serializable) # 或叫串行化
    • 原理
      • 事务序列化执行
    • 实现
      • 读锁写锁互斥