bet365娱乐场官网拖欠专业根据三栽异常现象将隔离性定义为四独级别。该标准根据三种异常现象将隔离性定义为四单级别。

Serializable VS SSI

SI是如此有效,甚至当TPC-C
benchmark测试着也从来不起任何特别现象[5],但实在SI不可知担保完全的失误行化效果。Critique中指出,SI还无法处理A5B(Write
Skew,写偏序),如下图所著。

bet365娱乐场官网 1

Lost Update

不见更新(Lost
Update)是一个经典的数据库问题,由于太过要所有主流数据库都解决了拖欠问题,我们这边以操作稍加变形来比喻。

我们下MySQL进行现身说法,创建表并初始化数据

create table account (balance int,name varchar(20)) ENGINE=InnoDB;
insert into account values(50,'Tom');
T1 T2
begin; begin;
select balance into @bal from account where name='Tom'
——————–
@bal = 50
select balance into @bal from account where name='Tom'
——————-
@bal = 50
update account set balance = @bal -40 where name = ‘Tom’;
commit;
update account set balance = @bal - 1 where name = ‘Tom’;
commit;

于上述操作中T1、T2失误行执行效力是对余额进行个别糟糕看减,分别吗40与1,最终价值为9,但相互之间的末段价值也49,T2的修改被遗失。我们得窥见Lost
update的真面目是T1事务读取数据,而后该多少为T2事务修改并交,T1基于已经晚点的数额进行了重复修改,造成T2的改被埋。

SI&MVCC

快照隔离(SI,Snapshot
Isolation)是讨论隔离性时周边的术语,可以做简单栽之解读,一凡是切实的割裂级别,SQL
Server、CockroachDB都一直定义了之隔离级别;二是一样栽隔离机制用来落实相应的断级别,在Oracle、MySQL
InnoDB、PostgreSQL等主流数据库中常见使用。差不多版本出现控制(MVCC,multiversion
concurrency
control)是经记录数据项历史版本的方式提升系统应多事务访问的出现处理能力,例如避免单值(Single-Valued)存储情况下写操作对读操作的吊排斥。MVCC和沿都是SI的第一实现手段,当然为存无锁的SI实现。以下是Critique描述的SI运作过程。

业务(记为T1)开始的转会面博得一个工夫戳Start
Timestamp(记为ST),而数据库内的所有数据项之每个历史版本都记录在相应之日子戳Commit
Timestamp(记为CT)。T1读取的快照由有数据项版本中那些CT小于ST且最近的历史版本构成,由于这些多少项内容无非是历史版本不见面重新被勾勒操作锁定,所以无会见出读写冲突,快照内的诵读操作永远不会见为打断。其他工作在ST之后的改动,T1休可见。当T1
commit的一瞬间会面收获一个CT,并确保大于此刻数据库中曾经在的自由时间戳(ST或CT),持久化时见面用是CT将当数据项的本时间戳。T1的勾勒操作也反映于T1的快照中,可以被T1内之宣读操作更读取。当T1
commit后,修改会指向那些具有ST大于T1 CT的事情可见。
假定是任何事情(T2),其CT在T1的运转间隔【ST,CT】之间,与T1对相同的多寡项进行勾勒操作,则T1
abort,T2
commit成功,这个特点深受誉为First-committer-wins,可以管非起Lost
update。事实上,部分数据库会拿其调整呢First-write-wins,将闯判断提前到write操作时,减少冲的代价。

这进程不是某某数据库的切实落实,事实上不同数据库对于SI实现在好死差别。例如,PostgreSQL会用史版本与手上版一起保存通过时戳区分,而MySQL和Oracle都以回滚段遭遇保存历史版本。MySQL的RC与RR级别都采取了SI,如果手上工作(T1)读操作的数码给外事情的勾勒操作加锁,T1转向回滚段读取快照数据,避免读操作让堵塞。但是RC的快照定义及上述描述不同,也席卷了T1执行过程被其他作业提交的新颖版本[6]。

除此以外,我们还有一个至关重要发现,时间戳是生成SI的第一要素。在单机系统被,唯一时间穿比较容易实现,而于分布式系统在跨节点、跨数据核心还是跨城市部署之状况下怎样建立一个唯一时钟就成为一个非常复杂的题目,我们临时留下一个伏笔将当后边的专题篇中进行讨论。

写于前

临两年分布式数据库技术加快进化,而出于金融行业技术生态的克,周围多同学对那并无深入的打听,所以进行高性能、高可靠系统规划时屡屡缺乏这一利器。Ivan希望因为多重文章的措施以及大家交流探讨,加深我们针对分布式数据库的认。本文是该系列文章的第一首,主要探索事务管理中之隔离性,厘清相关概念与关键技术,为后阐述分布式数据库的事务管理做一个选配,姑且算是一首前污染吧。


Read Skew

宣读偏序(Read
Skew)是RC级遇到的题材。如果数额项x与y存在一致性约束,T1预对读x,而后T2修改x和y后commit,此时T1再念y。T1获的x与y不满足原有的一致性约束。

MySQL默认隔离级别也RR,我们要手工安装为RC并初始化数据

set session transaction isolation level read committed;
insert into account values(70,'Tom');
insert into account values(30,'Kevin');
T1 T2
begin; begin;
select * from account where name=’Tom’;
———————
balance name
70 Tom
select * from account where name=’Tom’;
———————
balance name
70 Tom
update account set balance = balance - 30 where name='Tom';
update account set balance = balance + 30 where name=’Kevin’;
commit;
select * from account where name='Kevin';
———————
balance name
60 Kevin
commit;

启数据Tom与Kevin的账户合计为100,在T1事务内的星星不行读取得到账户合计为130,显然不合乎之前的一致性约束。

上这些异常现象后,Critique给有了初的矩阵,相比ANSI更加健全与否再也贴合真实的数据库产品。

bet365娱乐场官网 2

主流数据库考虑到离谱行化效果及出新性能的抵,一般默认隔离级别都在于RC与RR之间,部分提供了Serializable。特别提醒,无论ASNI
SQL-92还是Critique的隔断级别都无能够担保直接照射到实际数据库的同名隔离级别。

Read Skew

读偏序(Read
Skew)是RC级遇到的题材。如果数量项x与y存在一致性约束,T1事先对读x,而后T2修改x和y后commit,此时T1再念y。T1落的x与y不满足原有的一致性约束。

MySQL默认隔离级别为RR,我们用手工安装也RC并初始化数据

set session transaction isolation level read committed;
insert into account values(70,'Tom');
insert into account values(30,'Kevin');
T1 T2
begin; begin;
select * from account where name=’Tom’;
———————
balance name
70 Tom
select * from account where name=’Tom’;
———————
balance name
70 Tom
update account set balance = balance - 30 where name='Tom';
update account set balance = balance + 30 where name=’Kevin’;
commit;
select * from account where name='Kevin';
———————
balance name
60 Kevin
commit;

开始数据Tom与Kevin的账户合计为100,在T1事务内之个别破读取得到账户合计为130,显然不吻合之前的一致性约束。

加这些异常现象后,Critique给起了新的矩阵,相比ANSI更加圆满呢再次贴合真实的数据库产品。

bet365娱乐场官网 3

主流数据库考虑到离谱行化效果与产出性能的抵,一般默认隔离级别都在于RC与RR之间,部分提供了Serializable。特别提示,无论ASNI
SQL-92还是Critique的隔离级别都未能够管直接照射到实际数据库的同名隔离级别。

Lost Update

丢掉更新(Lost
Update)是一个经文的数据库问题,由于最为过要所有主流数据库都解决了该问题,我们这边将操作稍加变形来比喻。

咱下MySQL进行现身说法,创建表并初始化数据

create table account (balance int,name varchar(20)) ENGINE=InnoDB;
insert into account values(50,'Tom');
T1 T2
begin; begin;
select balance into @bal from account where name='Tom'
——————–
@bal = 50
select balance into @bal from account where name='Tom'
——————-
@bal = 50
update account set balance = @bal -40 where name = ‘Tom’;
commit;
update account set balance = @bal - 1 where name = ‘Tom’;
commit;

于上述操作中T1、T2失误行执行力量是对余额进行个别差看减,分别吗40同1,最终价值也9,但相互之间的末段价值吗49,T2的改动为丢掉。我们好窥见Lost
update的真相是T1事务读取数据,而后该数据给T2事务修改并交,T1基于已经过的多寡进行了再度修改,造成T2的改动为掩。

Serializable VS SSI

SI是这样有效,甚至于TPC-C
benchmark测试着为从未出现其它异常现象[5],但实际上SI不克确保总体的差行化效果。Critique中指出,SI还无法处理A5B(Write
Skew,写偏序),如下图所显示。

bet365娱乐场官网 4

ANSI SQL-92 Isolation Levels

ANSI
SQL-92可能是绝早提出了因异常现象来定义隔离级别之主意,同时没有拿割裂级别及具象落实机制绑定,隔离的实现好根据锁(lock-based)或者无锁(lock-free),兼容了连续之技艺发展。该专业根据三种植异常现象将隔离性定义也四个级别,具体如下。

bet365娱乐场官网 5

脏读,事务(T1)中改的数据项在没提交的动静下叫别作业(T2)读取到,而T1进行Rollback操作,则T2刚刚读取到之数码并不曾实际存在。
不得再读,T1读取数据项,T2对内部的数开展了修改或者删除且Commit成功。如果T1尝试重新读取这些数据,会获T2修改后底多少或者发现数目就抹。这样T1以一个事情中简单糟糕同条件的读取,且结果集内容变更或结果集数量缩减。
幻读,T1使用一定的查询条件得一个结出集,T2插入新的多寡还这些多少可T2刚刚操作的查询条件。T2
commit 成功后,T1再次实施同一的询问,此时抱的结果集增大。

很多章都构成数据库产品对上述异常现象的实例和拍卖体制进行了证明,本文中不再赘言,有趣味的同桌可以参考文末的链接[1]。

ANSI
SQL-92标准早以92年发布,但管即或后来都未曾给诸大数据库厂商严格以,部分缘由想必是业内过于简化和实际行使来必然水准之脱离。Jim
Gray等丁当1995颁发了论文“A Critique of ANSI SQL Isolation Levels”
(本文中简称也Critique[2])对隔断级别进行双重健全的阐释,可以帮我们深化理解。

SI&MVCC

快照隔离(SI,Snapshot
Isolation)是讨论隔离性时周边的术语,可以做简单栽的解读,一凡是切实可行的割裂级别,SQL
Server、CockroachDB都直接定义了这隔离级别;二凡是同样种植隔离机制用来落实相应的断级别,在Oracle、MySQL
InnoDB、PostgreSQL等主流数据库被广以。大多本出现控制(MVCC,multiversion
concurrency
control)是由此记录数据项历史版本的法门提升系统应多事务访问的出现处理能力,例如避免单值(Single-Valued)存储情况下写操作对读操作的吊排斥。MVCC和钉都是SI的根本实现手段,当然为有无锁的SI实现。以下是Critique描述的SI运作过程。

工作(记为T1)开始之霎时会见得一个年华戳Start
Timestamp(记为ST),而数据库内的有数据项之每个历史版本都记录在相应的岁月戳Commit
Timestamp(记为CT)。T1读取的快照由有数据项版本被那些CT小于ST且最近之史版本构成,由于这些数据项内容仅仅是历史版本不会见重于描绘操作锁定,所以未会见生出读写冲突,快照内的朗读操作永远不会见受卡住。其他事情在ST之后的改,T1非可见。当T1
commit的瞬间会见沾一个CT,并包大于此刻数据库中既存在的任意时间穿(ST或CT),持久化时见面将是CT将作为数据项之本子时间戳。T1的形容操作也体现在T1的快照中,可以被T1内之念操作更读取。当T1
commit后,修改会针对那些有ST大于T1 CT的作业可见。
苟在任何作业(T2),其CT在T1的运作间隔【ST,CT】之间,与T1对同一的数量项进行勾勒操作,则T1
abort,T2
commit成功,这个特性深受喻为First-committer-wins,可以确保不出新Lost
update。事实上,部分数据库会以那个调整呢First-write-wins,将闯判断提前至write操作时,减少冲的代价。

这进程未是有数据库的切实落实,事实上不同数据库对于SI实现有非常死差异。例如,PostgreSQL会拿历史版本与当前版一起保存通过时戳区分,而MySQL和Oracle都于回滚段遭遇保留历史版本。MySQL的RC与RR级别都运用了SI,如果手上事务(T1)读操作的数额被其他工作之勾勒操作加锁,T1转向回滚段读取快照数据,避免读操作为打断。但是RC的快照定义跟以上描述不同,也包括了T1执行进程被其他作业提交的新星版本[6]。

另外,我们还有一个重点发现,时间穿是生成SI的严重性要素。在单机系统面临,唯一时间穿比较好实现,而对分布式系统在跨节点、跨数据主导还跨城市部署之景象下怎么立一个唯一时钟就成为一个非常复杂的题材,我们临时留下一个伏笔将当背后的专题文章被展开座谈。

正文

我们率先由概念出发,事务管理包括原子性、一致性、隔离性和持久性四个点,即ACID。所有数据库专著都见面吃来是四只性状的概念,本文我们引用了Jim
Gray对其的概念。

Jim
Gray是事务处理方面的师父,本文中众多情节还源于他的专著及舆论。为免翻译引入的歧义,这里我们直接引用原文。

Atomicity: Either all the changes from the transaction occur
(writes, and messages sent), or none occur.

Consistency: The transaction preserves the integrity of stored
information.

Isolation: Concurrently executing transactions see the stored
information as if they were running serially (one after another).

Durability: Once a transaction commits, the changes it made
(writes and messages sent) survive any system failures.

于上述隔离性(Isolation)的定义着,我们好窥见该目标是设并发事务的施行职能和串行一致,但在切切实实技术实现上多次用以产出能力跟串行化效果之间进行平衡,很不便两者兼顾。平衡的结果就是碰头冒出负串行效果的景即异常现象(Phenomenon)。通常来说,隔离级别的升级换代伴随在出新能力的退,两者负相关。各种数据库在说话到断级别时都见面引用ANSI
SQL-92标准隔离级别,我们来探视它的具体内容。

Write Skew

描绘偏序(Write
Skew)也是一致性约束下之异常现象,即有限独相事务都因自己读到之数据集去覆盖任何一样部分数据集,在失误行化情况下零星只事情不管何种先后顺序,最终以直达平等状态,但SI隔离级别下无法兑现。下图的“黑白球”常常让用来证明写偏序问题。

bet365娱乐场官网 6

怎实现真正的错行化效果啊?事实上,早期的数据库已经通过严两流锁协议(S2PL,Strict
Two-Phase Locking)实现了完全的失误行化隔离(Serializable
Isolation),即在开展读操作的数码阻塞对应写操作,写操作阻塞所有操作(包括读操作与描绘操作)。如阻塞导致循环将组成死锁,则要进行rollback操作。S2PL的题材旗帜鲜明,在竞争激烈场面下,阻塞与死锁会造成数据库吞吐量下降和响应时间的加码,所以这种串行化无法以为实际生育环境。直到SSI的起,人们终于找到有实际价值的错行化隔离方案。

出错行化快照隔离(SSI, Serializable Snapshot
Isolation,也会见让翻译为序列化快照)是根据SI改进上Serializable级别的隔离性。SSI由Michael
James Cahill在外的舆论”Serializable Isolation for Snapshot
Databases”[3]受到提出(该论文获得2008 Sigmod Best Paper
Award,文章最后提供了该论文的2009年整版本[4]相关信息,有趣味之同班可以深入钻研)。SSI保留了SI的广大长,特别是读不死任何操作,写不会见卡住读。事务依然以快照中运行,但多了针对作业间读写冲突的监察用于识别事务图(transaction
graph)中之危险结构。当一组连发事务可能发生异常现象(anomaly),系统将经过回滚其中一些事情进行干预为清除anomaly发生的也许。这个进程虽然会造成一些事情之荒唐回滚(不会见导致anomaly的事务让误杀),但足以保消除anomaly[3]。

从今理论模型看,SSI性能接近SI,远远好叫S2PL。2012年,PostgreSQL在9.1本中落实了SSI[7],可能为是首独支持SSI的商贸数据库,验证了SSI的落实效益。CockroachDB也起Cahill的论文得到灵感,实现SSI并将那作那个默认隔离级别。

乘胜技术之前行,SI/SSI已经改成主流数据库的隔离技术,尤其是后世的面世,无需开发人员在代码通过显式锁来避免大,从而降低了人吧不当的票房价值。在分布式数据库的连带章节中,我们以越来越对SSI实现机制进行深入探讨。


参考文献
[1]Innodb中的政工隔离级别及沿之关联,ameng,https://tech.meituan.com/innodb-lock.html
[2]H. Berenson, P. Bernstein, J. Gray, J.Melton, E. O’Neil,and P.
O’Neil. A critique of ANSI SQL isolation levels. InProceedings of the
SIGMOD International Conference on Management of Data, pages1–10, May

  1. [3]Michael J. Cahill, Uwe Röhm, and Alan D.Fekete. 2008. Serializable
    isolation for snapshot databases. In SIGMOD ’08:Proceedings of the 2008
    ACM SIGMOD international conference on Management of data, pages
    729–738, New York, NY, USA. ACM.
    [4]Michael James Cahill. 2009. Serializable Isolation for Snapshot
    Databases. Sydney Digital Theses. University of Sydney, School of
    Information Technologies
    [5] A. Fekete, D. Liarokapis, E. O’Neil, P.O’Neil, andD. Shasha.
    Making snapshot isolation serializable. In ACM transactions on database
    systems, volume 39(2), pages 492–528, June 2005.
    [6]姜承尧,MySQL技术内幕:InnoDB存储引擎机, 械工业出版社, 2011
    [7]https://wiki.postgresql.org/wiki/Serializable

Critique Isolation Levels

Critique提出了ANSI
SQL-92存在的个别单问题,首先是自然语言方式界定的异常现象并无严加导致有的同质化的异常现象被遗漏;其次是有超人的异常现象并不曾吃含有进去,导致隔离级别在明显缺欠。因此,文中对ANSI
SQL-92的老三种异常现象(将其编号也A1/A2/A3)进行了扩大(编号吧P1/P2/P3),并追加了另外5种普遍的异常现象。受抑制篇幅,这里才对少数种植异常现象进行认证。

ANSI SQL-92 Isolation Levels

ANSI
SQL-92可能是无与伦比早提出了根据异常现象来定义隔离级别的措施,同时没有用切断级别跟具体贯彻机制绑定,隔离的落实可因锁(lock-based)或者无锁(lock-free),兼容了累的技能提高。该标准根据三栽异常现象将隔离性定义为四独级别,具体如下。

bet365娱乐场官网 7

脏读,事务(T1)中修改的数目项在没提交的动静下为外工作(T2)读取到,而T1进行Rollback操作,则T2刚刚读取到之多寡并没实际有。
不足再读,T1读取数据项,T2对中的数码开展了修改或者删除且Commit成功。如果T1尝试再度读取这些数据,会获取T2修改后的多寡或者发现数目现已去。这样T1每当一个业务中少不行同条件的读取,且结果集内容变更或结果集数量减小。
幻读,T1使用一定的询问条件得一个结出集,T2插入新的数据都这些多少可T2刚刚操作的查询条件。T2
commit 成功后,T1再次实施同样的查询,此时得的结果集增大。

诸多篇章都成数据库产品针对上述异常现象的实例和拍卖机制进行了证,本文中不再赘言,有趣味的校友可以参照文末的链接[1]。

ANSI
SQL-92标准早于92年公布,但不管即或后来都没有给诸大数据库厂商严格按照,部分缘由或者是标准过于简化和实际采用来一定水平之脱离。Jim
Gray等人当1995揭晓了舆论“A Critique of ANSI SQL Isolation Levels”
(本文中简称为Critique[2])对隔断级别进行更周到的阐释,可以帮我们深化理解。

描绘在前

濒临两年分布式数据库技术加快前进,而由经济行业技术生态之限,周围众多同室对那个并没深刻的问询,所以进行大性能、高可靠系统规划时一再欠这一利器。Ivan希望坐多元文章的主意及大家交流探讨,加深我们针对分布式数据库的认识。本文是该系列文章的第一首,主要探索事务管理中之隔离性,厘清相关概念和关键技术,为后阐述分布式数据库的事务管理做一个选配,姑且算是一篇前污染吧。


正文

咱俩第一从概念出发,事务管理包括原子性、一致性、隔离性和持久性四单方面,即ACID。所有数据库专著都见面叫有此四独特色的定义,本文我们引用了Jim
Gray对该的定义。

Jim
Gray是事务处理方面的大师,本文中过多情都出自外的专著及论文。为避翻译引入的歧义,这里我们直接引用原文。

Atomicity: Either all the changes from the transaction occur
(writes, and messages sent), or none occur.

Consistency: The transaction preserves the integrity of stored
information.

Isolation: Concurrently executing transactions see the stored
information as if they were running serially (one after another).

Durability: Once a transaction commits, the changes it made
(writes and messages sent) survive any system failures.

于上述隔离性(Isolation)的概念着,我们得发现那个目标是如果并发事务之执行效果以及串行一致,但每当切切实实技术实现达标翻来覆去得以出现能力与串行化效果之间开展平衡,很麻烦两者兼顾。平衡的结果虽是会见油然而生违背串行效果的面貌就是异常现象(Phenomenon)。通常来说,隔离级别之升迁伴随着出新能力的下降,两者负相关。各种数据库在讲到断级别时犹见面引用ANSI
SQL-92标准隔离级别,我们来瞧她的具体内容。

Write Skew

写偏序(Write
Skew)也是一致性约束下的异常现象,即有限个彼此事务都冲自己读到的数额集去覆盖任何一样片数据集,在错行化情况下零星独工作不管何种先后顺序,最终用齐平状态,但SI隔离级别下无法落实。下图的“黑白球”常常为用来证实写偏序问题。

bet365娱乐场官网 8

怎落实真正的错行化效果啊?事实上,早期的数据库都由此严厉两品级锁协议(S2PL,Strict
Two-Phase Locking)实现了全的错行化隔离(Serializable
Isolation),即在展开读操作的多少阻塞对应写操作,写操作阻塞所有操作(包括读操作以及描绘操作)。如阻塞导致循环将结合死锁,则需要开展rollback操作。S2PL的题目显然,在竞争可以场面下,阻塞与死锁会造成数据库吞吐量下降和应时间的增,所以这种失误行化无法使为实际生产条件。直到SSI的产出,人们终于找到有实际价值之错行化隔离方案。

出错行化快照隔离(SSI, Serializable Snapshot
Isolation,也会为翻为序列化快照)是冲SI改进上Serializable级别之隔离性。SSI由Michael
James Cahill在外的舆论”Serializable Isolation for Snapshot
Databases”[3]备受提出(该论文获得2008 Sigmod Best Paper
Award,文章最后提供了该论文的2009年整版本[4]系消息,有趣味之同班可以深深研讨)。SSI保留了SI的许多长,特别是朗诵不打断任何操作,写不见面死读。事务依然在快照中运行,但增加了对作业间读写冲突之监督用于识别事务图(transaction
graph)中之险恶结构。当一组连发事务可能有异常现象(anomaly),系统以通过回滚其中一些事情进行干涉为消弭anomaly发生的或是。这个历程尽管会招某些事情的一无是处回滚(不见面促成anomaly的业务让误杀),但足以保证消除anomaly[3]。

自从理论模型看,SSI性能接近SI,远远好于S2PL。2012年,PostgreSQL在9.1本被实现了SSI[7],可能吧是首只支持SSI的买卖数据库,验证了SSI的贯彻力量。CockroachDB也于Cahill的舆论获得灵感,实现SSI并以那个当做那个默认隔离级别。

乘机技术的开拓进取,SI/SSI已经化为主流数据库的隔断技术,尤其是后者的产出,无需开发人员在代码通过显式锁来避免大,从而降低了口呢错误的概率。在分布式数据库的连锁章节中,我们将进而对SSI实现机制进行深入探讨。


参考文献
[1]Innodb中之事体隔离级别跟钉的关系,ameng,https://tech.meituan.com/innodb-lock.html
[2]H. Berenson, P. Bernstein, J. Gray, J.Melton, E. O’Neil,and P.
O’Neil. A critique of ANSI SQL isolation levels. InProceedings of the
SIGMOD International Conference on Management of Data, pages1–10, May

  1. [3]Michael J. Cahill, Uwe Röhm, and Alan D.Fekete. 2008. Serializable
    isolation for snapshot databases. In SIGMOD ’08:Proceedings of the 2008
    ACM SIGMOD international conference on Management of data, pages
    729–738, New York, NY, USA. ACM.
    [4]Michael James Cahill. 2009. Serializable Isolation for Snapshot
    Databases. Sydney Digital Theses. University of Sydney, School of
    Information Technologies
    [5] A. Fekete, D. Liarokapis, E. O’Neil, P.O’Neil, andD. Shasha.
    Making snapshot isolation serializable. In ACM transactions on database
    systems, volume 39(2), pages 492–528, June 2005.
    [6]姜承尧,MySQL技术内幕:InnoDB存储引擎机, 械工业出版社, 2011
    [7]https://wiki.postgresql.org/wiki/Serializable

Critique Isolation Levels

Critique提出了ANSI
SQL-92存在的鲜独问题,首先是自然语言方式界定的异常现象并无严加导致一些同质化的异常现象被遗漏;其次是有些名列前茅的异常现象并没有让含有进去,导致隔离级别在明显缺欠。因此,文中对ANSI
SQL-92的老三种异常现象(将那编号也A1/A2/A3)进行了扩大(编号吧P1/P2/P3),并增了另外5种普遍的异常现象。受抑制篇幅,这里才对片种植异常现象进行求证。

相关文章