数据库哪个隔离级别可以实现脏读?
对于同时运行的多个事务,当这些事务访问数据库中的同一数据时,如果不采用必要的隔离机制,将导致各种并发问题:·脏读:对于两件事t1,t2,t1读取t2已更新但尚未提交的字段。之后,如果t2回滚,则t1读取的内容是临时的、无效的、不可重复的读取:对于两件事,t1,t2,t1读取一个字段,然后t2更新该字段。之后,t1再次读取相同的字段,并且值不同。·魔读:有两件事,t1,t2,t1从表中读取一个字段,t2在表中插入一些新行数据库事务的隔离:数据库系统必须具有隔离和运行各种并发事务的能力,这样它们就不会相互影响,避免了各种并发问题。事务与其他事务之间的隔离程度称为隔离级别,不同的隔离级别对应不同的干扰级别。隔离级别越高,数据一致性越好。但是,并发性越弱。数据库提供四个隔离级别:readuncommitted(readuncommitteddata)允许事务读取其他事务未提交的更改。脏读、不可重复读和不真实读问题都发生在已提交的读取(已提交的读取数据)中,只允许事务读取其他事务已提交的更改,这样可以避免脏读。但是,由于不可重复读取和不真实读取,仍会发生可重复读取,这确保事务可以多次从字段中读取相同的值。在事务期间,禁止其他事务更新字段,以避免脏读和不可重复读。但是,不真实读取的问题仍然存在,这可以确保事务可以从表中读取同一行。在此事务期间,禁止其他事务插入、更新和删除该表。所有并发问题都可以避免,但性能非常低。oracle支持两个事务隔离级别:read-committed、serializable。oracle的默认事务隔离级别是readcommitted,mysql支持4,mysql的默认事务隔离级别是:repeatableread
mvcc现在在主流数据库中使用。使用rr隔离级别后,将不会出现虚读。
根据不同的材料,rr是199x的ansisql标准,但真正的数据库不一定符合标准(事实上,最好没有虚读)。
原文标题:数据库如何防止脏读 数据库哪个隔离级别可以实现脏读?,如若转载,请注明出处:https://www.saibowen.com/tougao/16338.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「赛伯温」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。