当前位置:网站首页>【数据库系统概论(王珊)】第11章 并发控制
【数据库系统概论(王珊)】第11章 并发控制
2022-07-27 15:35:00 【tsunaa】
多事务执行方式
串行执行、交叉并发方式、同时并发方式
为什么要进行并发控制?
当多个用户并发地存取数据库时就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会存取和存储不正确的数据,破坏是事务的一致性和数据库的一致性。所以数据库管理系统必须提供并发控制机制。
数据库管理系统中并发控制机制的责任:
保证事务的隔离性和一致性,DBMS需要对并发操作进行正确调度。
并发操作带来的数据不一致性主要有:
丢失修改、不可重复读、读“脏”数据。
并发控制技术:
封锁。
基本的封锁类型有两种:
排它锁(写锁、X锁),共享锁(读锁、S锁)。
封锁类型的相容矩阵:
三级封锁协议:
1级封锁协议:
事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
正常结束(COMMIT) 非正常结束(ROLLBACK)
1级封锁协议可防止丢失修改
在1级封锁协议中,如果是读数据,不需要加锁的,所以它不能保证可重 复读和不读“脏”数据。
2级封锁协议:
1级封锁协议+事务T在读取数据R前必须先加S锁,读完后即可释放S 锁。
2级封锁协议可以防止丢失修改和读“脏”数据。
在2级封锁协议中,由于读完数据后即可释放S锁,所以它不能保证可重复读。
3级封锁协议:
1级封锁协议 + 事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。
3级封锁协议可防止丢失修改、读脏数据和不可重复读。
三级封锁协议总结:
活锁:
某个事务永远处于等待状态。
避免活锁的简单方法是采用先来先服务的策略。
死锁:
多个事务同时处于等待状态。每个事务都在等待其它事务释放锁使其能够继续执行,从而出现多个事务互相等待的僵局,每个事务永远不能结束。
死锁的预防:
不易实现,故DBMS在解决死锁问题上普遍采用诊断并解除死锁的方法
一次封锁法:
要求每个事务必须一次将所有要使用的数据全部加锁,否则就不能继续执行。
一次封锁法存在的问题:降低并发度、扩大封锁范围。
顺序封锁法:
顺序封锁法是预先对数据对象规定一个封锁顺序,所有事务都按这个顺序实行封锁。
顺序封锁法存在的问题:
维护成本高。
数据库系统中可封锁的数据对象极其众多,并且随数据的插入、删除等操作而不断地变化,要维护这样极多而且变化的资源的封锁顺序非常困难,成本很高。
死锁诊断与解除
死锁诊断方法:
超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁。
优点:实现简单
缺点:1)可能误判死锁;2)时限若设置得太长,死锁发生后不能及时发现。
等待图法:用事务等待图动态反映所有事务的等待情况。
事务等待图是一个有向图G=(T,U),T为结点的集合,每个结点表示正运行的事务, U为边的集合,每条边表示事务等待的情况,若T1等待T2,则T1,T2之间划一条有向边,从T1指向T2,并发控制子系统周期性地(比如每隔1 min)检测事务等待图,如果发现图中存在回路,则表示系统中出现了死锁。
解除死锁:
选择一个处理死锁代价最小的事务,将其撤消,释放此事务持有的所有的锁,使其它事务能继续运行下去。
串行调度是正确的,执行结果等价于串行调度的调度也是正确的。
可串行化的调度:
当且仅当其结果与按某一次序串行地执行这些事务时的结果相同,称这种调度策略为可串行化的调度。
可串行性:
是并发事务正确调度的准则。按这个准则规定,一个给定的并发调度,当且仅当它是可串行化的,才认为是正确调度。
目前DBMS普遍采用两段锁协议的方法实现并发调度的可串行性,以保证调度的正确性。
两段锁协议的内容:
1)在对任何数据进行读、写操作之前,事务首先要获得对该数据的封锁。
2)在释放一个封锁之后,事务不再获得任何其他封锁。
“两段”锁的含义:事务分为两个阶段
第一阶段是获得封锁,也称为扩展阶段;
第二阶段是释放封锁,也称为收缩阶段。
两段锁协议与三级封锁协议
两类不同目的的协议:两段锁协议 保证并发调度的正确性。
三级封锁协议:在不同程度上保证数据一致性。
遵守第三级封锁协议必然遵守两段协议。
封锁对象的大小称为封锁粒度。封锁对象可以是逻辑单元、物理单元。
例:在关系数据库中,封锁对象:
逻辑单元: 属性值、属性值集合、元组、关系、索引项、整个索引、整个数据库等。
物理单元:页(数据页或索引页)、物理记录等。
封锁粒度与并发度的关系:
封锁的粒度越 大,小,
系统被封锁的对象 少,多,
并发度 小,高,
系统开销 小,大,
选择封锁粒度:考虑封锁机构和并发度两个因素;对系统开销与并发度进行权衡
选择封锁粒度的原则:
需要处理多个关系的大量元组的用户事务:以数据库为封锁单位;
需要处理大量元组的用户事务:以关系为封锁单元;
只处理少量元组的用户事务:以元组为封锁单位。
多粒度封锁:在一个系统中同时支持多种封锁粒度供不同的事务选择。
多粒度树:
1)以树形结构来表示多级封锁粒度。
2)根结点是整个数据库,表示最大的数据粒度。
3)叶结点表示最小的数据粒度。
多粒度封锁协议:
允许多粒度树中的每个结点被独立地加锁;
对一个结点加锁意味着这个结点的所有后裔结点也被加以同样类型的锁;
在多粒度封锁中一个数据对象可能以两种方式封锁:显式封锁和隐式封锁。
显式封锁:
直接加到数据对象上的封锁。
隐式封锁:
由于其上级结点加锁而使该数据对象加上了锁。
显式封锁和隐式封锁的效果是一样的。
引进意向锁(intention lock)目的:
提高对某个数据对象加锁时系统的检查效率。
三种常用的意向锁:
意向共享锁(简称IS锁)、意向排它锁(,简称IX锁)、共享意向排它锁(简称SIX锁)
IS锁:
如果对一个数据对象加IS锁,表示它的后裔结点拟(意向)加S锁。
IX锁:
如果对一个数据对象加IX锁,表示它的后裔结点拟(意向)加X锁。
SIX锁:
如果对一个数据对象加SIX锁,表示对它加S锁,再加IX锁,即SIX = S + IX。
边栏推荐
- Gree "not cool": the giant lawsuit ended and was reduced by large dealers. Is it too late for the new battlefield of air conditioning?
- 下棋机器人折断7岁男孩手指,网友:违反了机器人第一定律
- Kubernetes Part 7: using kubernetes to deploy prometheus+grafana monitoring system (kubernetes work practice class)
- 立创EDA——原理图的布局与检查(三)
- Hegong sky team vision training Day7 - vision, Jetson naon and d435i
- Database hyperphone (III)
- Mysql: function
- 记一次 .NET 某智慧物流 WCS系统 CPU 爆高分析
- 可口可乐的首要挑战,不是元气森林
- Windows与网络基础-15-本地安全策略
猜你喜欢

Kubernetes第八篇:使用kubernetes部署NFS系统完成数据库持久化(Kubernetes工作实践类)

二舅的外甥和他的学生们

Flex flex flex box layout

Coca Cola's primary challenge is not vitality forest

Select structure

成本高、落地难、见效慢,开源安全怎么办?

诸神黄昏,“猫抖快”告别大V时代

Understand the staticarea initialization logic of SAP ui5 application through the initialization of fileuploader

两表联查1

三表联查2
随机推荐
风口之下,隐形正畸还能走多远?
Database hyperphone (III)
数据库超话(一)
信号量保护之位带操作
Gradient ring progress bar
Select structure
MySQL : 函数
Basic use and optimization of uitableview
$attrs and $listeners components transfer values
Smart fish tank design based on stm32
Redis: configuring AOF does not work
Mysql: function
This large model sparse training method with high accuracy and low resource consumption has been found by Alibaba cloud scientists! Has been included in IJCAI
Subject 3: straight driving
.net core with microservices - what is a microservice
格力「不清凉」:巨头诉讼落幕又遭大经销商减持,空调新战场还晚人一步?
动作捕捉系统用于柔性机械臂的末端定位控制
Kubernetes第七篇:使用kubernetes部署prometheus+grafana监控系统(Kubernetes工作实践类)
Gree "not cool": the giant lawsuit ended and was reduced by large dealers. Is it too late for the new battlefield of air conditioning?
App crash collection and analysis