事务的ACID特性以及并发操作控制(一)

所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全都不做,是一个不可分割的单元。

四个特性

原子性(Atomicity):事务中包括的诸多操作要么都做,要么都不做。

一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态到另一个一致性状态,因此当数据库只包含成功事务提交的结果的时候就称数据库处于一致性状态。如果数据库运行过程中发生故障,导致某些正在运行的事务被迫中断,这些被迫中断的事务对数据库所做的修改有部分已经写入物理数据库,那么此时数据库就处于不一致的状态。(分布式系统中就存在数据一致性的问题),可以通过一致性条件来判断数据是否一致。

隔离性(Isolation):一个事务的执行不能被其他并发执行的事务所影响,也就是说一个事务内部的操作以及使用的数据对其他事务是不可见的,并发的各个事务之间不能相互干扰。

持续性(Durability):指一个事务一旦提交之后,他对数据库中数据的改变就应该是永久性的,接下来的其他操作或者故障都不应该对其执行结果有何影响。

并发控制

              数据库是一种共享的资源,允许事务并发的执行,在单处理器系统中,事务的并发执行实际上是事务的并发操作轮流交叉执行,这种并行执行方式称为交叉并发方式,虽然事务并没有真正的并行运行,但是这样做确实提高了处理器的执行效率,减少空闲时间,多处理器系统中,每个处理器可以单独运行一个事务,多个处理器可以同时运行多个事务,实现真正的并行运行,这种并行执行称为同时并发方式。本文讨论的并发控制技术是以但处理其系统为基础的,因为此理论可以平行运用到多处理器系统中。

事务在单处理器系统中的执行方式

             当多个事务同时存取某一数据时就产生了并发的操作,若对并发操作不加以控制就会产生诸如存取和存储的数据不正确的问题,影响数据库中数据的正确性和事务的一致性。为了保证事务的一致性和隔离性,数据库系统必须提供并发操作控制机制,对并发操作进行正确的调度,这就是数据库中并发控制机制的责任。

下面看看并发操作带来的那些数据的不一致性问题。

考虑飞机订票系统中的一个操作活动序列                                                                                                                  (1)甲售票点(甲事务)读出某航班机票余额为A=16;                                                                                            (2) 乙售票点(乙事务)读出同一航班的机票余额也为A=16;                                                                                (3)甲售票点卖出一张机票,A=A-1,将A=15写回数据库;                                                                                  (4) 乙售票点同时也售出一张机票,A=A-1,将A=15写回数据库;                                                                    结果明明卖出两张机票,数据库中机票余额只减少1,这种情况称为数据库的不一致性。这种不一致性是由并发操作引起的。在并发操作情况下,对甲、乙两个事务的操作序列的调度是随机的。若按上面的调度序列执行了,甲事务的 修改就被丢失,这是由于第4步中乙事务修改A并写回后覆盖了甲事务的修改。

记事务为T.....n,读数据x为R(x),写数据为W(x);下图示范了并发操作中的三种数据不一致性问题。


三种数据不一致性

(1) 丢失修改                                                                                                                                                                    两个事务T1,T2同时读取同一数据并修改,T2提交的数据覆盖了T1提交的数据,导致T1的数据丢失了。

(2) 不可重复读                                                                                                                                                                指T1读取了数据后,T2对数据进行了更新操作,使得T1无法重现之前的数据,导致两次读取的数据不一致。具体的讲不可重复读分为三种情况:

          >>    T1读取了数据后,T2对数据进行了更新操作,使得T1无法重现之前的数据,导致两次读取的数据不一致

           >>   事务T1读取了某些数据,之后T2删除了一些数据,T1再回来读取数据的时候发现某些数据神秘的消失了

           >>  事务T1读取了某些数据,之后T2插入了一些数据,当T1再来读取这些数据的时候发现多出来一些数据。

后面两种不可重复读有时也成为 “幻读” (Phantom Row)

(3) 读脏数据

            读脏数据指的是T1对某些数据做了修改之后将数据提交到数据库,然后T2去读取了这些数据,再然后T1由于某些原因将之前事务所做的操作回滚了,那么此时数据库中的数据回到了最初的状态,T2就出现了读到脏数据的情况。

产生上述三种不一致性的原因就是事务的并发操作破坏了事务的隔离性。并发控制就是要正确的调度并发的事务操作。使得一个事务的执行不受别的事务的影响。


解决方案会在后面的事务的ACID特性以及并发操作控制(二)中给出

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容