2016 - 2024

感恩一路有你

数据库如何防止脏读 数据库哪个隔离级别可以实现脏读?

浏览量:2968 时间:2021-03-11 07:55:40 作者:admin

数据库哪个隔离级别可以实现脏读?

对于同时运行的多个事务,当这些事务访问数据库中的同一数据时,如果不采用必要的隔离机制,将导致各种并发问题:·脏读:对于两件事T1,T2,T1读取T2已更新但尚未提交的字段。之后,如果T2回滚,则T1读取的内容是临时的、无效的、不可重复的读取:对于两件事,T1,T2,T1读取一个字段,然后T2更新该字段。之后,T1再次读取相同的字段,并且值不同。·魔读:有两件事,T1,T2,T1从表中读取一个字段,T2在表中插入一些新行数据库事务的隔离:数据库系统必须具有隔离和运行各种并发事务的能力,这样它们就不会相互影响,避免了各种并发问题。事务与其他事务之间的隔离程度称为隔离级别,不同的隔离级别对应不同的干扰级别。隔离级别越高,数据一致性越好。但是,并发性越弱。数据库提供四个隔离级别:readuncommitted(readuncommitted data)允许事务读取其他事务未提交的更改。脏读、不可重复读和不真实读问题都发生在已提交的读取(已提交的读取数据)中,只允许事务读取其他事务已提交的更改,这样可以避免脏读。但是,由于不可重复读取和不真实读取,仍会发生可重复读取,这确保事务可以多次从字段中读取相同的值。在事务期间,禁止其他事务更新字段,以避免脏读和不可重复读。但是,不真实读取的问题仍然存在,这可以确保事务可以从表中读取同一行。在此事务期间,禁止其他事务插入、更新和删除该表。所有并发问题都可以避免,但性能非常低。Oracle支持两个事务隔离级别:read-committed、serializable。Oracle的默认事务隔离级别是read committed,MySQL支持4,MySQL的默认事务隔离级别是:repeatable read

mvcc现在在主流数据库中使用。使用RR隔离级别后,将不会出现虚读。

根据不同的材料,RR是199X的ANSI SQL标准,但真正的数据库不一定符合标准(事实上,最好没有虚读)。

数据库如何防止脏读 不可重复读和脏读的区别 脏读 幻读 不可重复读 区别

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。