事务知识点补充(ACID和数据库隔离级别)

来源:互联网 发布:换头型软件 编辑:程序博客网 时间:2024/05/19 13:13

数据库事务正确执行的四个基本要素:

1.原子性:简单说就是:  整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。

2.一致性:事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。事务一旦完成,涉及业务需处于一直一致的状态,例如:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性

3.隔离性:多个事务处理相同的数据,之间应该隔离,防止数据损坏。隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。

4.持久性:在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。事务结束后,数据已经持久化,只要不是新的事务变动了数据,那么不论发生什么其他的变故,数据都能复原。

数据库的隔离级别:

1,脏读:两个事务T1,T2, T1读取了T2修改但还未提交事务的数据,若之后,T2进行了回滚操作,则T1读取的的内容无效

2,不可重复读:两个事务T1,T2, T1读取了数据,然后T2更新了该数据,然后T1再读取数据,两次返回的值不同了

3,幻读:两个事务T1,T2, T1读取了某表的数据,T2对该表进行了新增或删除操作,然后T1再次读取数据,得到的数据多了或者少了

23的区别就在于,一个是数据的内容变了,一个是数据的条目变了
原创粉丝点击