《数据库系统概论》第十一章 并发控制

第十一章 并发控制

1.并发操作带来的数据不一致性包括丢失修改,不可重复读和读“脏”数据

丢失修改(lost update):两个事务T1和T2读入同一数据并修改,T2提交的结果破坏了T1提交的结果,导致T1的修改被覆盖

不可重复读(non-repeatable read):T1读取数据后T2进行了修改删除或者插入,然后T1再次读的时候读到的数据就不对了

读“脏”数据(dirty read):T1修改某一数据后将其写回磁盘,但是由于某些原因,T1回滚,操作被撤销,但是T2读到的还是之前修改好的数据,也就是“脏”数据。

2.并发控制的主要技术有:封锁(locking)、时间戳(timestamp)、乐观控制法(optimistic scheduler)和多版本并发控制(multi-version concurrency control MVCC)

3.基本的封锁类型有:排它锁(exclusive locks),又称为写锁,若事务对数据加上排它锁X锁之后可以对数据进行读写,但是其他事务都不能再加锁,直到事务释放了X锁为止

共享锁(share locks),又称为读锁,若事务对数据加上S锁,可以对数据进行读操作,并且其他事务不能再加X锁但是可以加S锁。

4.封锁协议:一级封锁协议:事务T对数据R进行修改之前必须对其添加X锁,知道事务结束才释放

二级封锁协议:在一级封锁协议的基础上,加上事务读取数据之前必须加上S锁,读完后即可释放S锁

三级封锁协议:在一级封锁协议的基础上,加上事务读取数据前必须加上S锁,直到事务结束才释放

5.死锁的诊断:超时法:如果一个事务的等待时间超过了规定的时限,就确认发生了死锁;

等待图法:事务等待图是一个有向图G=(T,U),T是事务节点,U是事务的等待情况,如果等待图中出现了环路就认为出现了死锁的情况

6.可串行化调度:多个事务并发执行顺序是正确的,当且仅当其结果与按某一次序串行地执行这些事务时的结果相同

可串行性(serializability)是并发事务正确调度的准则

7.显示封锁是应事务要求直接加在对数据对象上的锁;隐式封锁是加在数据上级结点的牵连锁;意向锁是用来指示下级结点也有锁的锁

8.IS锁:表示对后代结点拟加S锁(共享锁)

IX锁:表示对后代结点拟加X锁(排它锁)

SIX锁:对自己加S锁,拟对后代结点加X锁

### 数据库系统概论第十一章答案解析 #### 并发操作可能产生的数据不一致类别及其解决办法 并发操作可能导致的数据不一致性主要包括三类: - **丢失修改 (Lost Update)**:两个或更多事务尝试更新相同的数据项,在某些情况下,一个事务的更改会覆盖另一个事务未提交的结果,从而导致数据丢失[^1]。 - **不可重复读 (Non-repeatable Read)**:在一个事务内两次读取同一记录得到不同版本的现象。这通常是由于其他事务在此期间对该记录进行了修改并已提交所致。 - **读“脏”数据 (Dirty Read)**:当一个事务能够读取到另一尚未完成(即未提交)之事务所写入的新值时发生。这种情形下读取的是临时状态下的数据,可能是错误的信息。 为了防止上述三种类型的不一致情况的发生,可以采取如下措施: - 使用加锁协议来管理访问权限,确保在同一时间只有一个事务能对特定对象进行写入操作; - 实施多版本并发控制(MVCC),允许不同的事务看到它们各自启动时刻之前的一个稳定视图; - 应用乐观/悲观锁定策略,前者假设冲突很少见而后者则相反,两者都旨在最小化等待时间和死锁风险。 这些方法共同作用于数据库管理系统(DBMS)内部,通过严格的规则和算法保障了即使是在高负载环境下也能维持良好的性能表现以及数据完整性[^2]。 #### 并发控制的重要性及实现目标 引入并发控制的主要原因是提高系统的资源利用率和服务质量。如果不实施有效的并发控制,则多个并发执行的事物可能会破坏数据库的一致性和可靠性。具体来说,缺乏适当保护机制的情况下,各事物间相互干扰将威胁到事务处理过程中的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation) 和持久性(Durability)[^3]。 因此,DBMS 中设计有专门用于协调各个活动之间的关系,并维护整个环境处于健康运作状态的功能模块——这就是所谓的并发控制系统。它不仅促进了高效的任务调度,还保证了所有已完成的操作都能被正确反映在最终结果之中。 ```sql BEGIN TRANSACTION; -- 执行一系列SQL语句... COMMIT; ``` 此段伪代码展示了如何定义一个显式的事务边界,这对于理解何时开启与结束一次受控范围内的工作非常重要。实际应用中应依据业务逻辑需求合理规划此类结构,配合合适的并发控制手段以达到预期效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值