您的位置:首页 > 编程语言 > Java开发

mysql事务和spring事务传播类型

2019-08-15 16:55 253 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/cc_joke/article/details/99643822

1.事务特性ASID

1)A原子性:事务中的操作要么全部执行要么全部不执行(执行中有异常会回滚事务前状态)

2)S一致性:事务执行完毕后数据要保持一致

举例:事务执行前A、B的存款都是100,事务内容是A转账B,则事务执行完成之后,需要满足A和B的存款和还是200。

3)隔离性:不同的事物之间不会干扰

4)持久性:事务一旦提交,对数据库中数据是永久性的。

2.脏读、不可重复读、幻读

1)脏读:一个事务处理过程中,读取了另一个事务还未提交的数据。

2)不可重复读:一个事务处理过程中,对同一数据的多次查询得到不同的结果,这是由于另一个事务在多次查询间隔修改了这个数据。

3)幻读:一个事务处理过程中,读取了另一个事务新增的数据。

3.四种事务隔离级别

1)读未提交:一个事务可以读取到另外个还未提交的数据

产生问题:脏读、不可重复读、幻读

2)读已提交:一个事务可以读取到另外个已提交的数据

产生问题:不可重复读、幻读

3)可重复读:一个事务能够对同一记录进行重复性修改和读取,读取的数据始终一致(MySql的`默认事务隔离级别)

产生问题:幻读

4)串行化:多个事务以串行化

Serializable
的方式运行,自然不会产生并发事务问题。

产生问题:效率特别低。

4.spring的7种事务传播机制

1) required :如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,该设置是最常用的设置。

2)required_new : 无论当前有没有事务都会创建一个新事物

3)nested :如果当前存在事务则在嵌套内事务执行,如果没用则创建一个新事务

4)supports :如果当前存在事务,则加入该事务,如果没有事务则以非事务执行

5)not_supports :以非事务执行,如果当前存在事务,则把事务挂起

6)mandatory :如果当前存在事务,则加入该事务,如果没有则抛出异常

7)never:以非事务执行,如果当前存在事务,则抛出异常

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: