在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
事务的ACID属性如下: 原子性(Atomicity):事务的所有操作是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。原子性消除了系统处理操作子集的可能性。 一致性(Consistency):数据从一种正确状态转换到另一种正确状态。事务在完成时,必须使所有的数据都保持一致。在相关数据库中,所有规则都必 须应用于事务的修改,以保持所有数据的完整性。当事务结束时,所有的内部数据结构都必须是正确的。在存款取款的例子中,逻辑规则是,钱是不能凭空产生或销 毁的,对于每个(收支)条目必须有一个相应的抵衡条目产生,以保证账户是平的。 隔离性(Isolation):由并发事务所作的修改必须与任何其他并发事务所作的修改隔离。查看数据时数据所处的状态,要么是事务修改它之前的状态,要 么是事务修改它之后的状态。简单的理解就是,防止多个并发更新彼此干扰。事务在操作数据时与其他事务操作隔离。隔离性一般是通过加锁的机制来实现的。 持久性(Durability):事务完成之后,它对于系统的影响是永久性的。已提交的更改即使在发生故障时也依然存在。
其中的隔离性,并不总是需要的。有时候处于性能的考虑,可以降低隔离要求。但必须了解改变隔离级别所带来的问题。 如下: 1.脏读取: 脏读又称无效数据的读出,是指在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。 解决办法:用锁,锁定要改变的记录 2.不能重复的读取操作: 当数据在T1事务处理中读取,而在T1运行的同时,另一个事务处理T2,修改了T1中读取的数据,此时就会出现不能重复的读取操作,如果数据在T1多次读取,那么结果就会不同。 解决办法:用锁,锁定读取的记录 3.幻影读取: 幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行, 就好象发生了幻觉一样。 解决办法:用锁,范围锁定。
什么是锁? 锁就是防止其他事务访问指定的资源的手段。锁是实现并发控制的主要方法,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。 一般来说,锁可以防止脏读、不可重复读和幻觉读。
在我们定义隔离时,可以通过IsolationLevel枚举定义隔离级别(TransactionIsolationLevel)。
常用的事务处理隔离级别:
参考网址:http://www.cnblogs.com/zhouqianhua/archive/2011/04/15/2017049.html |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论