1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

三言两语RR与RC那点事

数据库隔离级别简介

从事数据库开发和运维的人员或多或少都了解过关于数据库隔离级别的概念。SQL标准将事务隔离级别分为读未提交(read uncinnutted),读已提交(read committed/RC),可重复读(repeatable read/RR),串行化(serializable)。

三言两语RR与RC那点事

可重复读和读提交的区别

隔离级别主要区别在于事务起点时刻的划分,也可以称为数据库快照的划分。对于数据库任意时刻的快照而言总是存在如下3种情况:对于快照n而言未提交的事务总是不可见。快照n之后,其他事务x做的提交,对于快照n而言在其之后提交的事务都属于未来事务,同样不可见。快照之前已完成提交的事务才可见。也就是说对于可重复读级别而言快照以事务开始时间为准,读已提交级别下每条SQL语句启动时重新获取当前数据库的快照以便获取最新已提交的事务情况。

针对RR级别的问题,数据库引擎当然没有那么小白,这里适用一条新的规则,发生DML时,需要读取已提交事务的最新值,这个读一般称为”当前读”(current read)。发起set DML时需要获取已提交的最新值,之后再进行运算,这就不存在事务丢失的风险了。

适用场景

RC适用于CRM类查询相对较多,需要获取最新值的系统。查询与修改的比例为7:1或8:1等等,注意具体参考实际系统并不绝对。RR适用于对账类系统,比如信用卡账户表与信用卡消费明细表。采取RC隔离级别时,如果不将数据静止化,对账的事务周期内,账户表余额或明细表一直发生变更,那整个账本永远也无法对账一致。

以上内容由IT那活儿(上海新炬王翦团队)提供。想要了解更多IT行业相关的内容,请关注“IT那活儿”公众号。

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/6351.html