数据库事物与隔离级别

来源:互联网 发布:ie11不支持javascript 编辑:程序博客网 时间:2024/05/21 00:46

事务的 ACID


原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。


1 、原子性

原子性即不可分割性,一个业务分为A、B两步,要么全部执行,要么全不执行。


2 、一致性

经典的银行转账例子,要么提交事务,要么回滚事务。


3 、隔离性

两个事务直接互不干扰,A执行增删改操作,不提交事务,B查询结果不会产生改变。


4 、持续性

持续性也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。


事物的隔离级别


如图:

                      


A) 修改时允许修改(丢失更新)

B) 修改时允许读取(脏读)

C)读取时允许修改(不可重复读)

D)读取时允许插入(幻读)


从上到下问题越来越不严重,但所需的性能开销却越大。


1)读取未提交, 这个级别就是一个事物更新的时候不允许更新,但允许读取,说以不会出现丢失更新,单会出现脏读。隔离级别最低。


2)读取已提交数据,就是一个事物更新的时候不允许读取,必须等到更新事物提交后才能读取,不会出现脏读,但可能出现不可重复度。隔离级别次低。


以上两种级别是针对更新事物的限制,在读取事物进行时,是不会有任何限制的。所以会出现不可重复读(读取时,有更新),和幻读(读取时,插入)。


3)可重现的读取,就是一个事物读取时,不允许更新,但允许插入。不会出现不可重复读,但会出现幻读。


4)序列化,只要有事物进行,其他事物必须等待该事务执行完。


以上两个事物会限制读取事物的,所以隔离级别较高,但性能开销不容小觑。


0 0
原创粉丝点击