数据库事务

事务属性(ACID)

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)

事件读现象

  • 脏读
  • 不可重复读
  • 幻读

事务隔离级别

  • 未提交读(READ UNCOMMITTED):脏读,不可重复读,幻读
  • 已提交读(READ COMMITTED): 不可重复读,幻读  --> oracle,sqlServe 默认
  • 可重复读(REPEATABLE READ):幻读   --> mysql 默认
  • 序列化(SERIALIZABLE ):无

  • 共享锁:未释放前其它事务可以读,可以再加共享锁,但不能修改。
  • 排它锁:未释放前其它事件,不可读,也不能修改。
  • 行级共享锁
  • 行级排它锁 
  • 表级(范围)共享锁
  • 表级(范围)排他锁

隔离级别与锁的关系

  • 在Read Uncommitted级别下,读操作不加 行级共享锁,写操作加 行级共享锁
  • 在Read Committed级别下,读操作需要加行级共享锁,但是在语句执行完以后释放行级共享锁;
  • 在Repeatable Read级别下,读操作需要加行级共享锁,但是在事务提交之前并不释放加行级共享锁,也就是必须等待事务执行完毕以后才释放加行级共享锁。
  • 在Serialize级别下,会在Repeatable Read级别的基础上,添加一个范围锁。保证一个事务内的两次查询结果完全一样,而不会出现第一次查询结果是第二次查询结果的子集。

参考:

https://baijiahao.baidu.com/s?id=1572543485267773&wfr=spider&for=pc&isFailFlag=1

https://blog.csdn.net/baidu_37107022/article/details/77481670

Isolation

原文地址:https://www.cnblogs.com/veryvalley/p/10240465.html