事务的隔离机制与传播+mvcc
一:事务特性:原子、隔离、持久、一致
二:事务隔离级别共四种,隔离的程度由低至高就是:
1)READ-UNCOMMITTED(读取未提交内容)级别
还没提交就可读,可能结果回滚,脏读
2)READ-COMMITTED(读取提交内容)级别
提交了后,读取的内容不一致,不可重复读
3)REPEATABLE-READ(可重读)级别
读完了,又加了一条,幻读,偏重于增删
4)SERIERLIZED(串行化) 。
慢
三:2和3都是使用mvcc的机制,使用版本号控制,对于select不同,2是生成很多版本号,3是对于读只有一个版本号
事务传播行为类型 |
说明 |
PROPAGATION_REQUIRED |
如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。 |
PROPAGATION_SUPPORTS |
支持当前事务,如果当前没有事务,就以非事务方式执行。 |
PROPAGATION_MANDATORY |
使用当前的事务,如果当前没有事务,就抛出异常。 |
PROPAGATION_REQUIRES_NEW |
新建事务,如果当前存在事务,把当前事务挂起。 |
PROPAGATION_NOT_SUPPORTED |
以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 |
PROPAGATION_NEVER |
以非事务方式执行,如果当前存在事务,则抛出异常。 |
PROPAGATION_NESTED |
如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。 |
在无人能够指引的路上,自己就是明灯