首页 > 代码库 > 事务的并发处理
事务的并发处理
事务特性:
acid
automic :原子性
consistent:一致性
itegrity:隔离性
durability:持久性
1、一致性:将事务中所做的操作捆绑成一个原子单元,即对于事务所进行的数据修改等操作,要么全部执行,要么全部不执行。
2、原子性:事务在完成时,必须使所有的数据都保持一致状态,而且在相关数据中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都应该是正确的。
3、隔离性:由并发事务所做的修改必须与任何其他事务所做的修改相隔离。事务查看数据时数据所处的状态,要么是被另一并发事务修改之前的状态,要么是被另一并发事务修改之后的状态,即事务不会查看由另一个并发事务正在修改的数据。这种隔离方式也叫可串行性。
4、持久性:事务完成之后,它对系统的影响是永久的,即使出现系统故障也是如此。
并发导致的问题:
1.脏读
读了其他事务未提交的数据,中间可能有事务回滚的情况,在读取数据的过程中,有其他事务回滚了该数据。
2.不可重复读
在同一个事务里,两次读取的数据不一致,在读取数据的过程中,有其他事务更新了该数据。
3.幻读:
在读取数据的过程中,有其他事务插了一条新的数据。
事务的隔离级别
mysql查看事务的隔离级别:select @@tx_isolation
详见:16 [个人补充知识点]在Spring中定义了5中不同的事务隔离级别
为了保证效率的高效采用read commited 但是这样不能保证不可重复读的问题,为此我们用悲观锁,乐观锁
依赖于数据库的
悲观锁:直接加锁,知道处理完成。
乐观锁:先执行,后检查是否对所操作的数据有改动。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。