0%

数据库管理系统

一、DBMS体系结构

(一)DBMS核心的构成

(二)DBMS进程结构
1.单进程结构

应用程序使用 DBMS 核心作为一个.exe 文件编译,作为单个进程运行

2.多进程结构

一个应用程序进程对应于一个 DBMS 核心进程(当进程过多时,操作系统资源占用过多,性能会下降)

3.多线程结构

只有一个 DBMS 进程,每个应用程序进程对应于一个 DBMS 核心线程

属于同一个进程的线程可以共享这一个进程的资源

Daemon是一个特殊的进程,会监视应用程序访问数据库的请求

4.进程/线程通信协议

应用程序通过DBMS提供的API或嵌入式SQL访问数据库,根据通信协议进行同步控制。

  • 写管道:pipe0:发送SQL语句、内部命令;
  • 读管道:pipe1:返回结果。

  • State:0-出错; 1-插、删、改操作成功; 2-查询成功,需进一步处理结果
  • TupNum:结果中的元组数
  • AttNum:结果中的属性个数
  • AttName:属性名
  • AttType:属性类型
  • AttLen:属性长度
  • TmpFileName:存放结果数据的临时文件名,其中的数据要用上述字典信息来解释。

二、文件组织

(一)堆文件

按插入顺序存储的记录,并按顺序检索。这是文件组织最基本、最普遍的形式。

(二)hash文件

记录地址通过哈希函数根据某个属性的值映射。

(三)索引文件

索引 + 堆文件

常用索引:

​ 1.B+树:一种多路搜索树,所有关键字都出现在叶子结点的链表中(稠密索引),且链表中的关键字恰好是有序的;

​ 2.簇集索引:簇集是一种存储表的方法,这些表密切相关并经常一起连接进磁盘的同一区域。例如,表BOOKSHELF 和BOOKSHELF_AUTHOR 数据行可以一起插入到称为簇(Cluster)的单个区域中,而不是将两个表放在磁盘上的不同扇区上。

三、查询优化

关系代数等价变换规则
1.连接、笛卡尔积交换律

2.连接、笛卡尔积结合律

3.投影的串接定律

4.选择的串接定律

5.选择与投影的交换律

6.选择与笛卡尔积的交换律

​ (1)如果 F 中涉及的属性都是 E 1 中的属性,则

σ F ( E 1 X E 2 )≡ σ F ( E 1 ) X E 2

​ (2)如果F = F1F2 ,并且F1只涉及E1中的属性,F2只涉及E2中的属性,则可推出

σ F ( E 1 X E 2 )≡ σ F1 ( E 1 ) X σ F2 ( E 2 )

7.选择与并的分配律

​ 设 E = E 1 E 2E1,E2有相同的属性名,则

σ F ( E 1 E 2 )≡ σ F ( E 1 )∪ σ F ( E 2 )

8.选择与差运算的分配律

​ 若 E1,E2有相同的属性名,则

σ F ( E 1 - E 2 )≡ σ F ( E 1 )- σ F ( E 2 )

9.选择对自然连接的分配律

σ F ( E 1 img E 2 )≡ σ F ( E1) img σF ( E 2 )

        **F** 只涉及**E** **1** 与**E** **2** 的公共属性
10.投影与笛卡尔积的分配律

​ 设E1和E2是两个关系表达式,A1,…,An是E1的属性,B1,…,Bm是E2的属性,则

11.投影与并的分配律

​ 设E1和E2有相同的属性名,则

四、数据库恢复技术

(一)事务

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

​ 事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。COMMIT表示提交,即提交事务的所有操作,将事务中所有对数据库的更新写回磁盘上的物理数据库中去,事务正常结束。ROLLBACK表示回滚,即在事务运行过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。

(二)事务的特性
1.原子性

​ 事务是数据库的逻辑工作单元,事务中包括的诸操作要么全执行,要么全不执行。

2.一致性

​ 事务执行的结果必须是使数据库从一个一致性变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入数据库中,这时数据库就处于一种不正确的状态。

3.隔离性

​ 一个事务的执行不能被其他事务干扰。即一个事务的内部操作以及使用的数据对其他并发事务是隔离的,并发执行的各个事务之间不能互相干扰。

4.持续性

​ 持续性也称永久性,指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

(三)数据转储

​ 数据转储是数据库恢复中采用的基本技术。所谓转储即DBA定期将整个数据库复制到磁带或另一个磁盘上保存起来的过程。这些备用的数据成为后备副本或后援副本。

1.静态转储

​ 静态转储是在系统中无运行事务时进行的转储操作。即转储操作开始的时刻,数据库处于一致性状态,而转储期间不允许对数据库的任何存取、 修改活动。显然,静态转储得到的一定是一个数据一致性的副本。

2.动态转储

​ 动态转储是指转储期间允许对数据库进行存取或修改。但是,转储结束时后援副本上的数据并不能保证正确有效。为此,必须把转储期间各事务对数据库的修改活动登记下来,建立日志文件,这样,后援副本加上日志文件就能把数据库恢复到某一时刻的正确状态。