数据库系统>并发控制

1.数据库系统架构设计知识

1.1练习题1

在数据库系统中,"事务"是访问数据库并可能更新各种数据项的一个程序执行单元。为了保证数据完整性,要求数据库系统维护事务的原子性、一致性、隔离性和持久性。针对事务的这4种特性,考虑以下的架构设计场景:

假设在某一个时刻只有一个活动的事务,为了保证事务的原子性,对于要执行写操作的数据项,数据库系统在磁盘上维护数据库的一个副本,所有的写操作都在数据库副本上执行,而保持原始数据库不变,如果在任一时刻操作不得不中止,系统仅需要删除副本,原数据库没有受到任何影响。这种设计策略称为(影子拷贝 )。

事务的一致性要求在没有其他事务并发执行的情况下,事务的执行应该保证数据库的一致性。数据库系统通常采用( 完整性约束检查 )机制保证单个事务的一致性。

事务的隔离性保证操作并发执行后的系统状态与这些操作以某种次序顺序执行(即可串行化执行)后的状态是等价的。两阶段锁协议是实现隔离性的常见方案,该协议( 能够保证事务的串行化执行,可能会导致死锁 )。

持久性保证一旦事务完成,该事务对数据库所做的所有更新都是永久的,如果事务完成后系统出现故障,则需要通过恢复机制保证事务的持久性。假设在日志中记录所有对数据库的修改操作,将一个事务的所有写操作延迟到事务提交后才执行,则在日志中(无需记录数据项被事务修改前的原始值 ),当系统发生故障时,如果某个事务已经开始,但没有提交,则该事务应该(什么都不做 )。

解析:

在数据库系统中,"事务"是访问并可能更新各种数据项的一个程序执行单元。为了保证数据完整性,要求数据库系统维护事务的原子性、一致性、隔离性和持久性。

题干中的第1个架构设计场景描述了数据库设计中为了实现原子性和持久性的最为简单的策略:"影子拷贝"。该策略假设在某一个时刻只有一个活动的事务,首先对数据库做副本(称为影子副本),并在磁盘上维护一个dp_pointer指针,指向数据库的当前副本。对于要执行写操作的数据项,数据库系统在磁盘上维护数据库的一个副本,所有的写操作都在数据库副本上执行,而保持原始数据库不变,如果在任一时刻操作不得不中止,系统仅需要删除新副本,原数据库副本没有受到任何影响。

题干中的第2个架构设计场景主要考查考生对事务一致性实现机制的理解。事务的一致性要求在没有其他事务并发执行的情况下,事务的执行应该保证数据库的一致性。数据库系统通常采用完整性约束检查机制保证单个事务的一致性。

题干中的第3个架构设计场景主要考查数据库的锁协议。两阶段锁协议是实现事务隔离性的常见方案,该协议通过定义锁的增长和收缩两个阶段约束事务的加锁和解锁过程,能够保证事务的串行化执行,但由于事务不能一次得到所有需要的锁,因此该协议有可能会导致死锁。

题干中的第4个架构设计场景主要考查数据库的恢复机制,主要描述了基于日志的延迟修改技术(deferred-modification technique)的设计与恢复过程。该技术通过在日志中记录所有对数据库的修改操作,将一个事务的所有写操作延迟到事务提交后才执行,日志中需要记录"事务开始"和"事务提交"时间,还需要记录数据项被事务修改后的新值,无需记录数据项被事务修改前的原始值。当系统发生故障时,如果某个事务已经开始,但没有提交,则该事务对数据项的修改尚未体现在数据库中,因此无需做任何恢复动作。

相关推荐
酥心糖小可爱28 分钟前
多窗口切换——selenium
服务器·数据库·selenium
默默无闻的白夜29 分钟前
【MyBatis操作数据库】XML配置
xml·数据库·mybatis
Jasonakeke1 小时前
【重学 MySQL】八十五、游标的使用
数据库·mysql
初叙1 小时前
cooladmin 后端 查询记录
数据库·cooladmin
eaglelau1 小时前
CSV 文件
数据库·python
幽兰的天空2 小时前
深入解析 MySQL 数据库:负载均衡
数据库·mysql·负载均衡
黄名富2 小时前
SQL 处理数列
数据库·sql·mysql·oracle
kangkang-2 小时前
MySQL联合索引(abc)命中测试
数据库·mysql
王大傻09284 小时前
数据库的性能优化 -- SQL性能优化
数据库·sql·性能优化
_.Switch5 小时前
Django SQL 查询优化方案:性能与可读性分析
开发语言·数据库·python·sql·django·sqlite·自动化