当前位置:网站首页>五个不同事物隔离级别,七个事物传播行为
五个不同事物隔离级别,七个事物传播行为
2022-08-09 09:29:00 【潇湘梦】
Spring在TransactionDefinition接口中定义这些属性
在TransactionDefinition接口中定义了五个不同的事务隔离级别
- ISOLATION_DEFAULT 这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别.另外四个与JDBC的隔离级别相对应
- ISOLATION_READ_UNCOMMITTED 这是事务最低的隔离级别,它充许别外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读
- ISOLATION_READ_COMMITTED 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。
- ISOLATION_REPEATABLE_READ 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了避免下面的情况产生(不可重复读)。
- ISOLATION_SERIALIZABLE 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻像读。
在TransactionDefinition接口中定义了七个事务传播行为。
PROPAGATION_REQUIRED 如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。
PROPAGATION_SUPPORTS 如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。但是对于事务同步的事务管理器,PROPAGATION_SUPPORTS与不使用事务有少许不同。
PROPAGATION_MANDATORY 如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。
PROPAGATION_REQUIRES_NEW 总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。
PROPAGATION_NOT_SUPPORTED 总是非事务地执行,并挂起任何存在的事务。
PROPAGATION_NEVER 总是非事务地执行,如果存在一个活动事务,则抛出异常
PROPAGATION_NESTED如果一个活动的事务存在,则运行在一个嵌套的事务中. 如果没有活动事务, 则按TransactionDefinition.PROPAGATION_REQUIRED 属性执行
数据隔离级别分为不同的四种:
1、Serializable :最严格的级别,事务串行执行,资源消耗最大;
2、REPEATABLE READ :保证了一个事务不会修改已经由另一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。
3、READ COMMITTED :大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。
4、Read Uncommitted :保证了读取过程中不会读取到非法数据。
边栏推荐
猜你喜欢
搭建Tigase进行二次开发
The div simulates the textarea text box, the height of the input text is adaptive, and the word count and limit are implemented
"The camera can't be used" + win8.1 + DELL + external camera + USB drive-free solution
本体开发日记05-努力理解SWRL(上)
What does the test plan include?What is the purpose and meaning?
Ontology development diary 02 - simple sparql query
接口设计
seata处理分布式事务
软件测试分析流程及输出项包括哪些内容?
本体开发日记05-努力理解SWRL(下)
随机推荐
2.字节流
软件测试分析流程及输出项包括哪些内容?
安装torch_sparse失败解决方法
全网最全的软件测试基础知识整理(新手入门必学)
用户设备IP三者绑定自动上号
【分布式事务】
使用Protege4和CO-ODE工具构建OWL本体的实用指南-1.3版本(7.4 Annotation Properties-注释属性)
BlockingQueue理论普
测试用例的原则、缺陷报告怎么写你都知道吗?
2.Collection接口
归并排序
接口测试主要测试哪方面?需要哪些技能?要怎么学习?
Go-goroutine 的那些事
3. Coding method
“摄像头用不了”+win8.1+DELL+外置摄像头+USB免驱的解决办法
类 对象 属性 方法 类的成员
一个项目的整体测试流程有哪几个阶段?测试方法有哪些?
测试计划包括哪些内容?目的和意义是什么?
本体开发日记03-理解代码
在anaconda环境中配置cuda和cudnn