事务特性:
acid
automic :原子性
consistent:一致性
itegrity:隔离性
durability:持久性
1、一致性:将事务中所做的操作捆绑成一个原子单元,即对于事务所进行的数据修改等操作,要么全部执行,要么全部不执行。
2、原子性:事务在完成时,必须使所有的数据都保持一致状态,而且在相关数据中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都应该是正确的。
3、隔离性:由并发事务所做的修改必须与任何其他事务所做的修改相隔离。事务查看数据时数据所处的状态,要么是被另一并发事务修改之前的状态,要么是被另一并发事务修改之后的状态,即事务不会查看由另一个并发事务正在修改的数据。这种隔离方式也叫可串行性。
4、持久性:事务完成之后,它对系统的影响是永久的,即使出现系统故障也是如此。
并发导致的问题:
1.脏读
读了其他事务未提交的数据,中间可能有事务回滚的情况,在读取数据的过程中,有其他事务回滚了该数据。
2.不可重复读
在同一个事务里,两次读取的数据不一致,在读取数据的过程中,有其他事务更新了该数据。
3.幻读:
在读取数据的过程中,有其他事务插了一条新的数据。
事务的隔离级别
mysql查看事务的隔离级别:select @@tx_isolation
详见:16 [个人补充知识点]在Spring中定义了5中不同的事务隔离级别
为了保证效率的高效采用read commited 但是这样不能保证不可重复读的问题,为此我们用悲观锁,乐观锁
依赖于数据库的
悲观锁:直接加锁,知道处理完成。
乐观锁:先执行,后检查是否对所操作的数据有改动。
原文地址:http://www.cnblogs.com/wsylly/p/3764209.html