SQL中数据库事务的四大特性以及事务的隔离级别

一.  四大特性:

1.原子性(Atomicity

原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

2.一致性(Consistency

    一致性是指事务必须使用数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行后都必须处于一致性的状态。

3.隔离性(Isolation

    隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启一个事务,不能被其他的操作所干扰,多个并发事务之间要相互隔离。

4.持久性(Durability

    持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即使是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

二.脏读:

   脏读是指在一个事务处理过程里读取了另一个未提交的事务中的数据。

    

     当一个事务正在多次修改某个数据,而在这个事务中这多次的修改都还未提交,这时一个并发的事务来访问该数据,就会造成俩个事务得到的数据不一致,例如:用户A给用户B转账100元,对应SQL语句如下:

当只执行第一条SQL时,A通知B查看账户,B发现确实钱已到账(此时即发生了脏读),而之后无论第二条SQL是否执行,只要该事务不提交,则所有操作都将回滚,那么当B以后再次查看账户时就会发现钱其实并没有转。

三.不可重复读:

     不可重复读是指在对于数据库中的某个数据,一个事务范围内多次查询却返回了不同的数据值,这是由于在查询间隔,被另一个事务修改并提交了

不可重复读和脏读的区别是,脏读是末一事务读取了另一个事务未提交的脏数据,而不可重复读则是读取了前一事务提交的数据

四.虚读(幻读):

     幻读是事务非独立执行时发生的一种现象,例如事务T1对一个表中所有的行的某个数据项做了从“1”修改到“2”的操作这时事务T2又对这个表插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。

五.四种隔离级别:

1.Serializable(串行化):可避免脏读,不可重复读,幻读的发生。

2.Repeatable read(可重复读):可避免脏读,不可重复读发生。

3.read committed(读已提交):可避免脏读的发生。

4.read uncommitted(读未提交):最低级别,任何情况都无法保证。

以上四种隔离级别最高的是Serializable级别,最低的是Read uncommitted级别,当然级别越高,执行效率就越低。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值