数据库系统实现实现技术.pptx

上传人:b****1 文档编号:1759062 上传时间:2022-10-23 格式:PPTX 页数:43 大小:170.76KB
下载 相关 举报
数据库系统实现实现技术.pptx_第1页
第1页 / 共43页
数据库系统实现实现技术.pptx_第2页
第2页 / 共43页
数据库系统实现实现技术.pptx_第3页
第3页 / 共43页
数据库系统实现实现技术.pptx_第4页
第4页 / 共43页
数据库系统实现实现技术.pptx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

数据库系统实现实现技术.pptx

《数据库系统实现实现技术.pptx》由会员分享,可在线阅读,更多相关《数据库系统实现实现技术.pptx(43页珍藏版)》请在冰豆网上搜索。

数据库系统实现实现技术.pptx

第九章数据库系统实现实现技术,9.1数据库的存储结构存储介质内外存数据交换数据库引擎中的存储管理器,主要两个部件:

缓冲区管理器和文件管理器。

数据库运行时,内外存间要频繁地进行数据交换,每交换一次数据称为一次I/O操作。

数据库系统需OS支持进行I/O。

I/O操作是很慢的,数据调出外存要缓存在缓冲区中供后续的操作使用(读/写)。

读不命中或写结果按策略更新时进行I/O。

每次交换的数据量称为一个数据块,一个块可以等于一个或几个磁盘块。

块大对顺序访问有利,对随机访问不利。

内存中缓冲区的大是若干个数据块。

数据库的存储结构,磁盘冗余阵列(RAID)RAID是数据库服务器最常用的外存储介质,有若干同样的磁盘组成的阵列,从RAID0-RAID8有多种组合方式。

通过冗余改善可靠性。

同一数据同时写入两个磁盘若干个磁盘数据用一个磁盘保存校验位。

通过数据条块化提高速度数据大体均匀地存放于若干磁盘上。

当多用户请求数据库数据时,I/O操作可以随机地落在不同的磁盘,磁盘阵列并行I/O从而提高速度。

备份数据和历史数据通过网络存储存放到物理上分离的地方(防火、水、震等)移动硬盘或光盘、磁带等大容量离线存储设备。

数据库的存储结构,文件内记录的存储数据库数据以文件形式在外存中存储。

数据库的逻辑记录在物理文件中如何实现,是记录的存储方法问题。

定长记录格式:

每个数据库记录占有定长文件记录。

例:

Employer(Enamechar(10),eNochar(10),Salaryreal)设一个实数占8字节,则一个记录28字节,文件的逻辑机构为:

删除操作空位处理其它记录依次上移最后记录填补空位被删空位链接、插入时用,数据库的存储结构,变长纪录:

每条数据库记录长度不同例:

Salsepson的属性adress是变长的Salseperson(empID:

char(3),empName:

char(8),sex:

char

(1),birthday:

date,spTelNo:

number(12),address:

varchar(50)字符串格式:

把每个数据库记录看作是连续的字节串,尾部加记录尾标记符。

(大多数操作系统支持按行存取文件)下面的关系,数据库的存储结构,下述文件存储是字符串格式0sp1刘女士F70-1-2013900823542北京市宣武区牛街街道双槐里小区22楼2-101137010002811sp2李先生M67-5-2213146092228北京市海淀区玉泉路甲19号1000492sp3何女士F62-9-713352210756山东省日照市276534字符串格式的缺点被删除的位置难以重新利用。

某记录要伸长很困难(移动大量记录)。

改进:

分槽式页结构(shottedpagestructure)记录从块的尾部邻接存放。

中间是自由空间(伸长记录用)。

块的开始是块首部,记录块中记录数、每个记录大小和位置。

分槽式变长记录结构变长记录的定长表示预留空间(按最大)固定块+溢出块格式,数据库的存储结构,固定块,溢出块,数据库的存储结构,文件内记录的组织一个文件包含了成千上万个记录,这些记录按什么顺序或方式安排,是数据库记录在文件内的组织问题。

对某种组织的文件怎样去查找、插入和删除,是文件中记录的存取方法问题。

不同的组织方式存取效率有很大差别。

记录的组织方式堆文件组织:

记录可以放在文件的任何位置,以输入顺序为序。

删除、插入操作不需移动数据。

顺序文件组织:

记录按查找键值的升序或降序的顺序逻辑存储的。

一般使用指针链结构。

散列文件组织(hashingfile):

某个属性值通过哈希函数求得的值作为记录的存储地址。

聚类文件组织:

一个文件可存储多个有联系的关系,有联系的记录存储在同一块内,以提高I/O速度。

数据库的存储结构,顺序文件组织记录的物理顺序和查找键值一致:

插入、删除需移动数据。

用指针逻辑链接:

插入:

找到键值位置;插入到空闲位置;修改指针;删除:

修改指针;回收空闲位置。

数据库的存储结构,聚类文件组织聚类文件的组织方式与查询的类型有关,一个文件内有两个或多个关系的记录类型。

例:

教学数据库中的关系S和SC,经常进行自然连接查询操作,如SELECTS.S#,Sname,C#,GradeFROMS,SCWHERES.S#=SC.S#当数据量很大时,两个文件内记录的连接操作是很慢的。

聚类文件格式如右图:

关系S和SC,聚类文件,数据库的存储结构,索引技术当文件中记录的数目和数据量很大时,直接查找速度会很慢。

必须建立索引机制。

索引是独立于主文件记录的一个只含索引属性的小的文件,且按索引值排序,查找速度可很快。

常用的索引或一、二级索引可以读入缓冲区以加快速度。

索引分类有序索引:

根据记录中某种排序顺序建立的索引。

散列索引:

根据记录中某个属性值,通过散列函数得到值作为存储空间的桶号。

有序索引分类:

主文件可建立几个索引文件。

主索引(聚类索引):

索引的查找键值的顺序与主文件顺序一致。

这种文件称作索引顺序文件。

主索引只有一个。

非聚类索引:

索引的查找键值的顺序与主文件顺序不一致。

数据库的存储结构,主索引稠密索引:

对于主文件中的每一个查找键值建立一个索引记录(索引项),索引记录包括查找键值和指向具有该值的主文件中第一个记录的指针。

例:

稀疏索引:

在主文件中,若个个查找键值才建立一个所以记录,索引记录的内容与稠密索引相同。

例:

要找到Liu,先找到He指向的主文件然后顺链找到Liu。

数据库的存储结构,多级索引:

即使采用稀疏索引,可能建成的索引还是很大,以致于查询效率不高。

例:

主文件100000个记录,每块可存储10个记录,需10000个数据块。

若以块为单位建立稀疏索引,索引需10000项。

虽然索引记录比主记录小得多,如每块可存100个索引项,索引块仍需100块,缓冲区就很难放得下。

解决的办法是对主索引再建立一级索引,如图所示的二级索引。

如果外层索引数据量还是太大,可建立3级、4级索引。

多级索引可用B+树或B树实现。

数据库的存储结构,索引的更新删除:

为了在主文件中删除一条记录,需找到主文件记录,删除。

如果符合索引键值的记录有多个,索引不用修改。

否则,对稠密索引,删除相应的索引项;对稀疏索引,如果被删记录的索引值在索引块中出现,则用主文件被删记录的下一个记录的查找键A替换,若A已出现在索引块,则删除被删记录的对应多音键。

插入:

用插入记录的查找键找到插入位置,执行主文件插入。

对稠密索引且查找键未在索引块出现,在索引中插入。

对稀疏索引,每块数据对应一个索引项。

若数据块有空闲放得下新数据,不用修改索引;否则,加入新数据块,在索引块中插入一个新索引项。

数据库的存储结构,辅助索引在其他属性上建立索引,也可以提高以这些属性为查找键值的查找速度,称为辅助索引。

但由于相同查找键值的记录分散在主文件中(已按主索引顺序存储),辅助索引需新的结构。

辅助索引的指针不直接指向主文件记录,而是指向一个桶,桶内存放指向具有同一查找键值的主记录指针。

辅助索引(最末级)不能是稀疏索引。

例:

在Salary建索引,数据库的存储结构,B+树索引B+树的结构:

一颗M阶的B+树,按下列方式组织:

每个结点至多有m-1个查找键值和m个指针。

如下图叶结点指针指向主文件中的记录或桶。

非叶结点指针数m/2nm,Pi指向的子树中所有键值均小于Ki,而大于等于Ki-1。

例:

下图是一颗三阶B+树,对于m阶、K个键的B+树,查找次数logm/2K,第九章数据库系统实现实现技术,9.2事务事务(Transaction)的概念定义:

事务是DBMS中一个逻辑工作单元,通常由一组数据库的操作组成,满足原子性、一致性、隔离性和持久性四个性质。

事务的ACID性质原子性(Atomic):

构成事务的所有操作要么全部执行,反映到数据库中;要么全部不执行,没有对数据库中的数据造成影响。

一致性(Consistency):

事务的操作使数据库从一个一致状态(所有对象满足各自的约束)转变为另一个一致状态。

隔离性(Isolation):

在多用户环境下,事务的执行不受同时执行的其它事务的影响。

例:

多售票点售票的例子。

持久性(Durability):

一个事务如果成功执行,其对数据库的影响是持久的,不因故障而失效。

事务,事务的例子例1:

向客户1003销售pCode=101的产品10个UpdateProductsetqty=qty-10wherepCode=101;InsertintoOrder(25,1002,2016-3-11,2016-3-12);InsertintoOrderdetail(25,101,10,0.05);Commit;例2:

银行数据库的转账事务,从账号A转50元到账户BRead(A);A:

=A-50;Write(A);Read(B);B:

=B+50;Write(B);Commit;,事务,事务的标识由begintransaction语句和endtransection显式定义事务的开始和结束。

隐式定义:

从一个读写语句开始,遇到rollback或commit语句时终止(SQL-92)。

Commit:

提交,确认事务执行。

Rollback:

回滚,将此前的执行的操作影响恢复到操作前。

事务的大小与回滚机制事务执行过程中出现错误、或不可执行的操作(如订单已插入、结账时发现账户余额不足)需回滚。

因此DBMS将事务的执行缓存在回滚段(表空间一个区域),执行rollback或commit后清除。

回滚段大小、回滚缓冲区大小影响事务的大小、并发事务数和执行效率。

事务,如何保证上述事务满足ACID性质?

回滚机制和故障恢复机制保证了事务的原子性。

如果一个事务没有执行到commit,前面的操作不反映到数据库数据中。

只要事务定义的合理,其原子性能保证结果得一致性。

持久性需要数据库的故障恢复系统将发生故障时尚未将操作结果体现到数据库中的操作进行适当处理,以确保操作结果正确。

关于持久性,与数据库文件系统的缓存机制密切相关。

因为数据的读写操作是在缓冲区进行的,在还没有写回磁盘文件前发生故障,就出现了持久性问题。

故障恢复机制:

在事务的执行过程中,如果发生了故障,系统采取适当措施取消一个未完成的事务对数据库的影响,或将已经执行完的事务结果反映的数据库存储文件中。

事务的隔离性需要复杂的并发控制机制来实现。

第九章数据库系统实现实现技术,9.3并发控制为什么需要并发事务为有效响应多用户实时数据库操作,提高吞吐量,数据库事务内的操作都是交错执行的,即并发执行事务。

因为提高吞吐量:

事务的吞吐量是指单位时间内平均完成的事务个数。

一个事务设计两类操作:

一类I/O操作,如从磁盘读写数据,速度较慢;一类是CPU操作,速度较快。

如果允许不同事务的读、写、CPU运算、网络传输等操作并行执行,则可有效提高事务的吞吐量。

进程调度都是这样做的。

有利于短事务的快速执行:

事务交错执行有利于短事务的快速完成,从而缩短事务的平均完成时间。

并发控制,并发事务调度调度:

多个事务包含的操作之间,按照一定的顺序执行的方式称为一种调度。

调度类型:

如果每个事务的草阿诺与其它事务的操作的执行顺序没有交错,则称为串行调度;反之,称为并发调度。

假设事务的定义是正确的,即可保证数据库从一个一致状态转换为另一个一致的状态,那么,串行调度的最终结果一定是一致状态。

但并发调度若不加适当控制,则有可能出现异常,使数据库的一致性遭到破坏。

并发控制,并发调度异常丢失更新异常-写写(ww)冲突即重写未提交数据(overwritinguncommitteddata),指的是事务T1修改了对象A的值,在T1尚未提交前,事务T2页修改了A的值,将T1对A的修改覆盖了。

设A是库存,初值500,T1和T2分别销售100、200,正确的结果是200。

但右图的调度执行结果为300。

并发控制,读脏数据异常-写读(WR)异常即读未提交的数据(readinguncommitteddata),指的是事务T2读取了被T1修改但尚未提交的数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > IT认证

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1