星空网 > 软件开发 > 数据库

数据库事务隔离级别

数据库隔离级别:是在在数据库操作中,为了有效保证并发读取数据的正确性提出的。

  隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed。它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、幻读和第二类丢失更新这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。

数据库的几种隔离级别:

  • READ UNCOMMITTED(读未提交数据):允许事务读取未被其他事务提交的变更数据,会出现脏读、不可重复读和幻读问题。
  • READ COMMITTED(读已提交数据):只允许事务读取已经被其他事务提交的变更数据,可避免脏读,仍会出现不可重复读和幻读问题。
  • REPEATABLE READ(可重复读):确保事务可以多次从一个字段中读取相同的值,在此事务持续期间,禁止其他事务对此字段的更新,可以避免脏读和不可重复读,仍会出现幻读问题。
  • SERIALIZABLE(序列化):确保事务可以从一个表中读取相同的行,在这个事务持续期间,禁止其他事务对该表执行插入、更新和删除操作,可避免所有并发问题,但性能非常低。

Oracle支持两种事务隔离级别:

  READ COMMITTED(默认事务隔离级别),SERIALIZABLE

MySQL支持四种事务隔离级别,其中REPEATABLE READ为默认事务隔离级别。

通过上面可以知道多事务同时运行,如果不采用以上四种隔离机制,可能会产生多个并发问题,其中包括脏读、不可重复读和幻读,下面就解释下这几种并发问题:

  存在两个事物(T1,T2)同时运行

  • 脏读:T1读取了已经被T2修改但还未提交的字段,由于某种原因,T2事物回滚,则T1读取的内容是临时且无效的。
  • 不可重复读:T1读取一个字段,之后T2更新了该字段,T1在此读取该字段值发生了变化。
  • 幻读:T1从一个表中读取了一个字段,然后T2在该表中插入了一些新的行,之后T1在此读取该表会多出几行。



原标题:数据库事务隔离级别

关键词:数据库

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

您的全新eBay店铺上线,请查收!:https://www.kjdsnews.com/a/544682.html
Shopee商品5星好评消失了,原因竟是……:https://www.kjdsnews.com/a/544683.html
在Shopify开店要美国商标吗?Shopify商标怎么注册:https://www.kjdsnews.com/a/544684.html
捷克海外仓退货换标服务,捷克海外仓哪家好:https://www.kjdsnews.com/a/544685.html
Lazada 9.9大促你准备好了吗?东南亚居民都在抢购这些爆品:https://www.kjdsnews.com/a/545656.html
品牌出海如何备战旺季,高能观点集锦在此:https://www.kjdsnews.com/a/545657.html
深圳光明农场大观园儿童乐园位置+门票+项目+交通:https://www.vstour.cn/a/403240.html
Gmarket等平台大幅降低会员费,积极争夺Coupang用户:https://www.kjdsnews.com/a/1840791.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流