null三级数据库技术三级数据库技术第9章 事务管理与数据库安全null本部分占总分的8%
主要内容:
事务的四大特性
事务并发控制的缺陷和
影响数据一致性的三大
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
现
数据库锁
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
数据库访问权限 重中之重
事务特性
并发控制问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
的表现
数据库锁协议
数据库访问权限
每年必考
9.1 事务的概念和特性9.1 事务的概念和特性考点1 事务的概念考点1 事务的概念资金转账例子
转帐操作由扣款操作和增加款项操作组成
两个操作要么全部完成,要么都不发生
转帐操作可以看成扣款和增加款项的集合
在数据库中这些操作的集合是一个独立单元。
事务是构成单一逻辑工作单位的操作集合
事务完全执行,称为已提交事务,中途发生错误,需要对发生的改变进行撤销,称为事务回滚
考点2 事务特性考点2 事务特性原子性(atomicity):事务中的操作要么全部执行,要么都不执行(事务管理部件责任)
一致性(consistency):并发执行的事务,其执行结果与按某一顺序执行的结果一致(程序员责任)
隔离性(isolation):多个并发事务的执行互不干扰(并发控制部件责任)
持久性(Durability):提交的事务,对数据库中数据的改变不会丢失,即使发生故障(恢复部件责任)
简称ACID准则考题考题1、事务特性可表示为ACID特性,其中字母I表示的是事务的 2008.09
A、原子性 B、隔离性 C、一致性 D、持久性
c
2、确保事务的原子性是由数据库管理系统中的哪一个部件负责的?
A、恢复管理 B、并发控制 C、完整性约束 D、存储管理
B (事务管理的一部分) 2008.04 2005.9null3、事务的所有操作在数据库中要么全部正确反映出来,要么全部不反映,这是事务的哪个特性? 2007.09
A、持久性 B、原子性 C、隔离性 D、一致性
B
4、被中止的事务对数据库所做的改变必须撤销,这称做事务的【1】2008.04
回滚null5、数据库管理系统中,保证事务的隔离性是由【1】部件完成 2007.09
并发控制9.2 故障恢复9.2 故障恢复考点1 故障类型考点1 故障类型事务故障
逻辑错误:事务内非法的内部条件,使事务无法执行
系统错误:由于系统进入不良状态(死锁),使事务无法继续执行
事务故障由于没有全部执行,使数据库可能不一致,恢复子系统需要回滚事务(undo)
系统故障
硬件故障、数据库软件本身、操作系统BUG引起,内存内容丢失,外存内容完好
磁盘故障
磁盘损坏null1、下列关于数据库系统的故障叙述中,哪个是不正确的?
A、事务故障可能导致数据库处于不一致状态
B、事务故障可能由两种错误产生:逻辑错误和系统错误
C、系统发生故障时,一般主存储器内容完好,而外存储器内容丢失
D、磁盘故障一般指的是磁头损坏或磁盘内容丢失
C 2008.04
2、在事务处理过程中,如果由于某些内部条件而使事务无法继续正常执行,则表示出现了
A、由逻辑错误引起的事务故障 B、由系统错误引起的事务故障 C、系统故障 D、磁盘故障
A 2008.09考点2 基于日志的恢复考点2 基于日志的恢复保证数据库的一致性和事务的原子性
日志记录了数据库中的所有更新操作,记录了数据库的写操作和事务处理的重要事件
事务开始日志记录、更新日志记录、事务提交日志记录、事务的中止日志记录
日志文件能够很好地支持事务故障和系统故障的恢复
事务中的某个操作发生后,是先写日志文件还是先更新数据库
遵循先写日志原则
null为什么先写日志,后写数据库
如果先写数据库,故障发生时,还没有写日志文件,日志文件中没有记录数据库更新前后的值,那么就没法进行UNDO操作(回滚)
如果先写日志文件,即使故障发生时,没有写数据库,由于更新前后的值保存在日志文件中,所以既可以进行UNDO,又可以进行REDO操作考题考题1、为了保证对故障恢复的支持,登记日志记录时必须遵循的原则是【1】原则
先写日志 2008.04
2、在修改数据库时,如果先对外存的数据库进行修改,而没对外存的日志文件进行修改,若此时系统出现故障,那么系统恢复时
A、不可执行UNDO,也不可执行REDO
B、不可以执行UNDO,但可以执行REDO
C、可以执行UNDO,也可以执行REDO
D、可以执行UNDO,但不可以执行REDO
B 2007.09null3、下列哪一项不是日志文件中应该记录的内容?
A)事务开始 B)事务提交
C)事务对数据的修改 D)事务对数据的查询
D 2007.04
4、数据库恢复通常基于数据备份和【1】 。 日志文件 2006.09 2005.09null5、下列哪个与数据库日志无关?()
A、保障事务原子性 B、保障数据库一致性
C、故障恢复 D、死锁检测
D 死锁检测工作在并发控制中处理 2005.04
6、日志文件是用于记录() 2006.04
A、程序运行过程 B、对数据库所有的更新操作
C、程序执行的结束 D、用户对数据库的访问信息
B9.3 并发控制(重点)9.3 并发控制(重点)考点1 事务的并发执行可能出现的3个主要问题考点1 事务的并发执行可能出现的3个主要问题并发操作带来的数据不一致性并发操作带来的数据不一致性丢失修改(lost update)
不可重复读(non-repeatable read)
读“脏”数据(dirty read)数据库的并发操作通常会带来3个问题:1. 丢失修改1. 丢失修改事务 1 与事务 2 从数据库中读出同一数据并修改,事务 2 的提交结果破坏了事务 1提交的结果,导致事务 1 的修改被丢失。
图8.1 三种数据不一致性图8.1 三种数据不一致性(a) 丢失修改2. 不可重复读2. 不可重复读事务1读取数据后,事务2执行更新操作,使事务1无法再现前一次读取结果。
图8.1 三种数据不一致性(续) 图8.1 三种数据不一致性(续) (b) 不可重复读不可重复读的3种情况不可重复读的3种情况1. 事务1读取某些数据后,事务2对其做了修改,当事务1再次读该数据时,得到与前一次不同的值。2. 事务1按照一定的条件,从数据库中读取了某些数据记录后,事务2删除了其中部分记录,当事务1再次读取数据时,发现某些记录神密地消失了。不可重复读的3种情况不可重复读的3种情况3. 事务1按照一定的条件,从数据库中读取了某些数据记录后,事务2插入了一些记录,当事务1再次按相同条件读取数据时,发现多了一些记录。后两种不可重复读有时也称为幻影现象3. 读“脏”数据3. 读“脏”数据事务1修改某一数据,并将其写回磁盘上的数据库中。这样,事务2读到的数据就与数据库中的数据不一致,是不正确的数据,又称为“脏”数据。事务2读取同一数据(被事务1修改后的数据)后,事务1由于某种原因被撤消,这时事务1已修改过的数据恢复原值图8.1 三种数据不一致性(续)图8.1 三种数据不一致性(续)(c) 读“脏”数据null1、对未提交更新的依赖(“脏”数据的读出)是事务的哪个特性被破坏?
A、原子性 B、一致性 C、隔离性 D、持久性 2008.04
B
2、设有两个事务T1,T2,对数据A的并发操作如下图所示,下列说法正确的是
T1 T2
1)读A
2) 读A
A=A+10写回
COMMIT
3)读A
COMMIT A、该操作不存在问题
B、丢失更新
C、不能重复读
D、读“脏”数据C 2007.09 考点2 并发事务的调度 考点2 并发事务的调度什么样的并发操作调度是正确的
可串行化调度
当多个事务在某个调度下的执行结果与这些事务在某个串行调度下的执行结果相同,该调度是可串行化调度
简单说,一个并行调度与一个串行调度等价,就说这个并行调度为可串行化调度
可串行化是多个事务并发执行正确性准则。
可串行化调度保障数据库的一致性。null级联回滚
某事务故障导致一系列事务回滚现象
无级联调度
当某调度可以避免级联回滚的发生,这样的调度为无级联调度
可串行调度且无级联调度是我们追求的目标null如何保证并发操作的调度是正确的
如何保证调度为可串行调度
基于锁的并发控制
通过锁的方法限制多个事务对同一数据的访问
两种最基本的数据加锁方法
1、共享琐(S)
事务获得某数据项Q的共享琐,事务可读Q但不能写Q,其他事务仍然可以获得Q的共享琐
2、排他琐(X)
事务获得Q的排他琐,事务可读和写Q,其他事务不能再对Q加排他锁封锁的2种类型封锁的2种类型排它锁 — 写锁,X锁若事务 T 对数据对象A 加上 S 锁,则其它事务只能再对A 加 S 锁,而不能加 X 锁,直到T 释放 A 上的 S 锁。若事务 T 对数据对象 A 加上 X 锁,则只允许 T读取和修改 A,其它任何事务都不能再对A加任何类型的锁,直到 T 释放 A 上的锁。共享锁 — 读锁,S锁封锁的相容矩阵封锁的相容矩阵Y=Yes,相容的请求
N=No,不相容的请求null两段封锁协议保证可串行化,该协议把每个事务分解为加锁和解锁阶段
第一个阶段增长阶段(加锁),事务可以获得锁,但不能释放锁
第二个阶段(缩减阶段),事务只能释放锁,不能获得锁两段锁协议(续)两段锁协议(续)T1
Slock B
读B=2
Y=B
Xlock A
A=Y+1
写回A=3
Unlock B
Unlock A
T2
Slock A
等待
等待
等待
等待
等待
Slock A
读A=3
Y=A
Xlock B
B=Y+1
写回B=4
Unlock B
Unlock A T1
Slock B
读B=2
Y=B
Unlock B
Xlock A
A=Y+1
写回A=3
Unlock A
T2
Slock A
等待
等待
等待
等待
Slock A
读A=3
X=A
Unlock A
Xlock B
B=X+1
写回B=4
Unlock B (a) 遵守两段锁协议 (b) 不遵守两段锁协议 T1
Slock B
读B=2
Y=B
Unlock B
Xlock A
A=Y+1
写回A=3
Unlock AT2
Slock A
读A=2
X=A
Unlock A
Xlock B
等待
Xlock B
B=X+1
写回B=3
Unlock B
(c) 不遵守两段锁协议-错误 null两阶段封锁协议的变体:
严格两阶段封锁协议:要求排他锁在事务提交后才能释放,防止其他事务读数据
强两阶段封锁协议:全部锁必须在事务提交后才能释放
严格两阶段封锁协议和强两阶段封锁协议都能避免级联回滚,但不能保证死锁的发生两段锁协议(续)两段锁协议(续)图 遵守两段锁协议的事务发生死锁T1
Slock B
读B=2
Xlock A
等待
等待
T2
Slock A
读A=2
Xlock B
等待
考题考题1、下列关于事务T1和T2的两种调度的叙述中,哪个是正确的?
A)调度一和调度二都是并发调度,它们等价
B)调度一和调度二都是串行调度,它们不等价
C)调度一是串行调度,调度二是并发调度,它们等价
D)调度一是串行调度,调度二是并发调度,它们不等价 C 2009.03null2、如果有两个事务,同时对数据库中同一数据进行操作,不可能引起冲突的操作是 A)其中有一个是DELETE B)一个是SELECT,另一个是UPDATE C)两个都是SELECT D)两个都是UPDATE
读操作 不会引起冲突
C 2009.03
3、下列叙述中,哪一条是不正确的?
A、排他锁又称X锁或写锁
B、共享锁与任何锁都相容
C、强两阶段封锁协议表示事务提交之前不得释放任何锁
D、封锁自身的主要问题是死锁
B 2008.04null4、下列叙述中,哪条是不正确的?
A、封锁是保证数据一致性的常用方法
B、封锁协议限制了可能的调度数目
C、封锁协议自身会产生死锁问题
D、强两阶段封锁协议就是严格两阶段封锁协议
D 2008.09
5、严格两阶段协议要求【1】更新的封锁必须保持到事务的终点
释放 2007.09shsh6、若事务T对数据R已加排他锁(X锁),则其他事务对R
A) 可以加共享锁(S锁),不能加X锁
B)不能加S锁,可以加X锁
C)可以加S锁,也可以加X锁
D)不能加任何锁
D 2007.04
9.4 数据库安全性9.4 数据库安全性保护数据库不被被恶意访问考点1 安全性措施的层次考点1 安全性措施的层次恶意访问的形式
未经授权读取数据(窃取信息)
未经授权修改数据
未经授权消除数据
安全措施层次
物理层、网络层、操作系统层、数据库系统、人员层考点2 数据库的访问权限考点2 数据库的访问权限数据库的访问权限
Read
Insert
Update
Delete
数据库模式的修改权限
Index
Resource 建新关系
Alteration
drop考题考题1、下列对DELETE权限叙述中,正确的是
A、允许删除数据 B、允许删除关系
C、允许对数据库模式进行删除
D、和DROP权限等价
A 删除元组
2、SQL语言中,Resouce权限允许创建新的【1】
关系考点3 SQL中的安全性说明考点3 SQL中的安全性说明SQL定义语言(DDL)中select,insert,update,delete对应数据库访问权限Read、Insert、Update、Delete
SQL中的权限授予和回收命令
权限授予命令 grant
权限回收命令 revoke考题考题1、SQL语言的REVOKE语句是实现下列哪种数据控制功能()
A、可靠性 B、并发性控制 C、安全性控制 D、完整性控制
C REVOKE回收权限,属于安全控制
2、SQL 语言规定,对数据库中的表能够执行授予权限和回收权限命令的用户()
A、只能是表的使用者 B、只能是表的建立者
C、只能是DBA D、是DBA和表的建立者
D考点4 可信计算机系统评估标准考点4 可信计算机系统评估标准可信计算机系统评估标准
由低到高分为7级
D、C1、C2、B1、B2、B3、A1
D最低级别,没有安全保证
C2安全产品最低界别
B1真正具有安全意义的产品null1、实际安全产品的最低级别是() 2006.4
A、D B、C2 C、B1 D、B2
B C2为产品最低安全级别 B1为真正意义的安全产品 产品名称中有“安全”,“可信”字样
2、多用户数据库系统的目标之一是使每个用户好像使用一个单用户数据库一样,为此数据库系统必须进行
A、安全控制 B、完整性控制 C、并发控制
D、可靠性控制
C 2007.09