数据库系统概论知识总结

数据库系统概论

1. 简述两段锁协议的内容

两段锁协议是指所有事务必须分为两个阶段对数据项加锁和解锁:

第一阶段是获得封锁,也称扩展阶段,事务可以申请获得任何数据项上的任何类型的锁,但不能释放任何锁。

第二阶段是释放封锁,也称收缩阶段,事务可以释放任何数据项上的任何类型的锁,但不能再申请任何锁。

2. 并发调度的正确行的标准是什么,如何保证并发调度的正确性

可串行性是并发事务正确调度的准则,也就是它的执行结果与串行调度结果一致的可串行化调度。

普遍采用的是两端锁协议的方法实现并发调度的可串行性,从而保证调度的正确性。

3. 请简述事务的概念和4个特性。以及恢复技术能保证事务的那些特性?

事务是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。

原子性: 事务的步骤集合必须作为一个单一的、不可分割的单元出现。

一致性: 事务执行时保持事务的一致性

隔离性: 事务执行不能被其他事务干扰

持续性: 事务一旦提交对数据库数据改变应该永久性

故障恢复技术可以保证事务的原子性和持续性。

并发控制可以保证事务的一致性和隔离性

4. 数据库中为什么要并发控制,并发控制可以保证事务的那些特性?

数据库共享资源的,通常有多个事务同时运行。如果不对并发操作加以控制就可能会存取和存储不正确的数据,而破坏数据库的一致性。

并发控制可以保证事务的一致性和隔离性。

5. 并发操作会带来哪几类数据不一致,用什么方法能避免各种不一致的情况?

分为三类:丢失修改,不可重复读,读“脏”数据。

避免数据不一致的方法就是并发控制,常用的并发控制技术有封锁方法,时间戳方法,多版本并发控制方法。

6. 什么是活锁和死锁,及各自的产生原因和解决方法?

活锁:事务长时间处于等待(可能永远等待)

活锁产生原因:当一系列封锁不能按照先后顺序执行时,就可能导致一些事务无限期等待某个封锁,从而导致活锁。

避免活锁的方法一般是采用先来先服务的策略。

死锁:事务T1在等待事务T2,T2又在等待T1,两个事务永远不能结束,从而形成死锁。

死锁产生的原因:两个或多个事务都已经封锁了一些数据对象,又请求对已经为其他事务封锁的数据对象加锁,从而出现死等待。

解决方法:死锁的预防 死锁的诊断和解除

死锁的预防:一次封锁法,顺序封锁法

一次封锁法:每个事务必须一次性将所有要使用的数据全部加锁,否则就不执行

缺点:降低系统并发度,难以事先精确确定封锁对象

顺序封锁法:预先对数据对象规定一个封锁顺序

缺点:维护成本高,难以实现

诊断和解除的方法:超时法 等待图法

等待图法:事务等待图是一个有向图G(T,U),其中T为结点集合,每个结点代表正在运行的事务,u为边集合,每条边代表事务的等待情况。

  1.   并发控制子系统周期性,生成事务等待图,检测事务,若是发现图中存在回路,便是出现死锁。
    
  2.   解除死锁的方法:选择一个处理死锁代价最小的事务,撤销事务,释放此事务所持有的锁,使其他事务运行下去。
    

遵守两段锁协议的调度是正确调度的充分条件,但不是必要条件
可串行化的调度就是正确的调度,可串行性是并发事务正确调度的准则

8. 什么是冲突,和冲突可串行化调度?

冲突:是指不同事务对同一数据的读写操作和写写操作。

  1.   除读写操作和写写操作外,其他操作是冲突的操作
    
  2.   不同事务的冲突操作和同一事务的两个操作(读写)是不能交换的
    

一个调度sc在保证冲突操作的次序不变的情况下,通过交换两个事务不冲突操作的次序,得到另一个调度sc’,
如果是sc’是串行的,则称其调度sc为冲突可串行化的调度。

9. 冲突可串行化调度是可串行调度的充分条件,但不是必要条件

若并发事务都遵守两段锁协议,则对这些事务的任何并发调度策略都是可串行化的

事务遵守两段锁协议是可串行化调度的充分条件,但不是必要条件。

10. 两段锁协议与一次封锁法的异同:

  1.   一次封锁法要求每个事务必须一次将所有要使用的数据全部加锁,否则就不执行,因此一次封锁法遵守两段锁协议。
    
  2.   两段锁协议并不要求事务必须一次性将所有要使用数据全部加锁,因此遵守两段锁协议也可能发生死锁。
    

11. 什么是意向锁,引进意向锁的目的是什么?

意向锁的含义:如果一个结点加意向锁,则说明该节点的下层结点正在被加锁。对任一个结点加基本锁,必须先对它的上级加意向锁。

引进意向锁的目的:提高对某个数据加锁时系统的检查效率。

原因:在多粒度封锁方法中,一个数据对象可能以两种方式加锁,显式封锁,与隐式封锁。因此在系统在对某一数据对象加锁时,不仅要检查该对象上有无(显式和隐式)封锁与之相冲突,还要检查其所有上级结点和所有下级结点,看申请的封锁是否与这些结点上的封锁发生冲突。显然这样检查方法效率是很低的,为此而引进了意向锁。

12. 具有意向锁的多颗粒封锁方法

任何事务T要对一个数据对象加锁,申请封锁时按自上而下的次序进行,释放封锁时按自下而上的次序进行。

具有意向锁的多颗粒封锁方法,提高了系统的并发度,减少了加锁与解锁的开销。

13.封锁协议:指在运用X锁,S锁,对数据对象加锁时,需要约定一些规则。

  1.   一级封锁协议:指事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。
    

功能:可防止丢失修改,并保证事务T恢复

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

功能:不仅防止了丢失修改,还防止了读“脏”数据。(由于读完后,即可释放S锁,所以不能保证可重复读。

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

功能:可防止 丢失修改,读“脏”数据,不可重复读。

14. 事务时恢复和并发控制的基本单位,并发控制机制的基本任务是;

  1.   对并发操作进行正确调度
    
  2.   保证事务的隔离性
    
  3.   保证事务的一致性(即数据库的一致性)
    

15. 登记日志文件必须遵循的两条原则

登记的次序必须严格按并发事务执行的时间次序

必须先登记日志文件,后写数据库(因为一旦断电后,若是先写数据库,则在恢复时可能会发生错误)

16. 范式

1NF:每个分量都是不可分的数据项 ,

2NF:每个非主属性都要完全函数依赖于任何一个候选码(在1NF基础上)

3NF:若F中不存在传递函数依赖,则是第三范式(在1NF基础上)

BCNF:在3NF下,Y依赖与X,其中,X中必须包含码(而且每一个依赖都要满足)

4NF:对于每一个非平凡的多值依赖(Y多值依赖于X)其中X都含有候选码。

优化范式:通过模式分解可以实现,能够消除数据冗余,插入异常,更新异常,删除异常。

17. 数据库设计步骤

  1.   需求分析阶段(数据字典,全系统中数据项,数据结构,数据流,数据存储的描述)
    
  2.   概念结构设计阶段(E-R图)
    
  3.   逻辑结构设计阶段(E-R图变换成关系表)
    
  4.   物理结构设计阶段(存储安排,存取方法选择,存取路径建立,创建索引)
    
  5.   数据库实施阶段(创建数据库模式,装入数据,试运行)
    
  6.   数据库运行与维护
    

18.数据字典

(作用): 它是下一步概念结构设计的基础,是在需求分析阶段建立,在数据库设计过程中不断修改,充实,完善的。它是关于数据库中数据的描述,而不是数据本身。

(内容): 通常包括数据项,数据结构,数据流,数据存储和处理过程 这5个部分组成)

19.进程和线程的区别

1.根本区别:进程是操作系统资源分配的基本单位,而线程是CPU处理器任务调度和执行的基本单位。

2.开销区别:每个进程独有独立的代码和数据空间,进程之间切换开销大;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换开销小(这也是引进线程的一个原因)。

3.所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线程同时执行(通过CPU调度,在每个时间片中只有一个线程执行)

4.内存分配:系统为每个进程分配不同的内存空间;而对线程而言,除CPU外系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源。

5.包含关系:线程是进程的一部分,所以线程也称为轻量级进程。一个进程可以有多个线程,且至少还有一个线程。

6.进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有自己的地址空间,至少有5种基本状态;而线程是CPU处理器调度和分配的基本单位。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值