第八章——并发控制

首先区分交叉并发方式和同时并发方式。

8.1,并发控制概述

并发带来的三种数据不一致性:1,丢失修改;2,不可重复读(又可分三种具体情况,后两种称为幻影现象);3,读脏数据。


8.2,封锁

两种锁:排它锁(X锁)和共享锁(S锁)。

排它锁称为写锁,即只有加锁的事务可以对其读取和修改,其他事务不能对其加任何锁,即既不能读也不能写;共享锁称为读锁,当某事务对数据加S锁,则其他事物可以对其加S锁,一切共享读数据。


8.3,封锁协议

一级封锁协议

当事务T对数据R修改之前必须对其加X锁,直到操作完毕。

一级封锁协议中,若只读数据不写数据是不需要加锁的,所以不能解决不可重复读和脏数据。

二级封锁协议

在一级协议之上,加上当事务T读取数据R时,必须加上S锁,读取后释放S锁。

这能解决脏数据问题,但是不能解决可重复读。

三级封锁协议

在一级协议之上,加上当事务T读取数据R时,必须加上S锁,事务结束后才能释放。

这就可以重复读了。


8.4,活锁和死锁

活锁

本来可以得到锁,但是被插队了,导致一直得不到锁。通过先来先服务的原则可以解决活锁问题。

死锁

死锁产生的原因

事务T1首先拿到了A锁,事务T2首先拿到了B锁,T1过了一会需要B锁,于是等待T2释放B锁,但是T2过了一会需要A锁,于是等待T1释放A锁,这就导致两方永无止境的等待下去。

通过两种方法来解决死锁问题,死锁预防和死锁检测解除。

死锁预防

一次封锁法:事务必须一开始就取得全部需要的锁。这会导致并发度降低。

顺序封锁法:建立B树来确定正确的拿锁顺序,但是很困难,成本很高。

死锁检测解除

超时法:如果事务运行超过预期时间,则可认为死锁,上去解除。问题是有可能误判,同时如果预期时间设置过长,会导致不能及时发现。

等待图法:建立有向图,节点为事务,边为等待情况。周期性检测是否有回路,有则说明死锁。


8.5,并发调度的可串行性

多个事务的并发执行是正确的,当且仅当其结果与按某一次序顺序执行的结果相同时,则称为可串行化。

一个给定的并发调度,当且仅当是可串行化时,才是正确调度。

通过二段所来保证事务的正确调度。


8.6,二段锁协议

事务对锁的操作分为两个阶段:扩展阶段(拿锁阶段)和收缩阶段(放锁阶段)。

扩展阶段只能拿锁不能放锁,收缩阶段只能放锁不能拿锁。

二段锁协议保证可串行化,但是可串行化不一定都是二段锁协议。

二段锁协议和一次封锁法有区别,一次封锁法是在开头拿所有锁,而二段锁协议是在一个阶段渐进的拿锁,这意味着二段锁协议可能导致死锁。

8.7,封锁的粒度

就是封锁对象的大小,是元组,还是数据项,还是整个表或者更大的。

粒度越大,并发度越低,系统开销越小;粒度越小,并发度越高,开销越大。

多粒度封锁

为了灵活处理,系统如果支持不同粒度供事务选择,则成为多粒度封锁。

根据层次关系建立粒度树,在粒度树种某一节点加的锁称为显示封锁,该锁会扩散到其所有子孙节点,称为隐式封锁。

显然这种显隐式封锁在每次加锁前要增加许多检查,故效率较低。

意向锁

在对任一节点加锁时,必须先对其上层节点加意向锁。

三种意向锁:意向共享锁(IS锁)、意向排它锁(IX锁)、共享意向排它锁(SIX锁)。

IS锁:某节点加IS锁,则其后裔“意向”加S锁,这里意向可以理解为打算。

IX锁,某节点加IX锁,则其后裔“意向”加X锁。

SIX锁:某节点加SIX锁,则该节点加S锁,然后再加IX锁,则其后裔意向加X锁。

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

推荐阅读更多精彩内容