数据库事务

Posted veryvalley

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库事务相关的知识,希望对你有一定的参考价值。

 

事务属性(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

以上是关于数据库事务的主要内容,如果未能解决你的问题,请参考以下文章

事务日志的用途是啥

数据库事务初识

事务分类与特性

事务特性,事务的隔离级别,并发事务可能出现的问题,spring事务 数据库锁

数据库事务系列5 分布式事务及其他

SQLServer事务java事务