数据库物理存储.ppt

上传人:牧羊曲112 文档编号:5985666 上传时间:2023-09-11 格式:PPT 页数:80 大小:227.63KB
返回 下载 相关 举报
数据库物理存储.ppt_第1页
第1页 / 共80页
数据库物理存储.ppt_第2页
第2页 / 共80页
数据库物理存储.ppt_第3页
第3页 / 共80页
数据库物理存储.ppt_第4页
第4页 / 共80页
数据库物理存储.ppt_第5页
第5页 / 共80页
点击查看更多>>
资源描述

《数据库物理存储.ppt》由会员分享,可在线阅读,更多相关《数据库物理存储.ppt(80页珍藏版)》请在三一办公上搜索。

1、第五章 数据库存储结构,在SQL标准中,数据库按三级模式构建,它们是:视图(子模式)、基本表(模式)、存放数据的操作系统文件(存储模式)。这一章我们重点讨论:“DBMS如何把基本表、索引等数据存储到磁盘文件中,以及如何提高查询速度等问题”,学习这些知识的目的是:更好地设计你的数据库及配置你的数据库参数,使系统效率更高。,第五章 内容,5.1 存储介质 介绍5.2 存储结构5.3 索引技术,5.1 存储介质,一个数据库最终要存储到计算机的存储设备中。因此,我们首先介绍一下数据库系统所涉及到的计算机存储设备。,5.1.1 存储介质层次,一个数据库在运行过程中,涉及多种存储设备。我们按存储器中数据被

2、DBMS使用的顺序,把存储器分为三级。内存作为一级存储器,存放DBMS当前正在使用或正要使用的数据库数据。硬磁盘作为二级存储器,存放整个数据库,这些数据可能随时被DBMS调入内存。,1、内存,磁盘、磁带、光盘等作为三级存储器,存放数据库的备份,当磁盘中的数据库遭到破坏时,用数据库的备份来恢复。如图所示:,存储器分三级结构图,一级,二级,三级,5.1.2 内存,内存中存放系统正在使用或正要使用的数据。内存由操作系统来管理。操作系统为数据库在内存中开辟一块区域,用来存放数据库的数据和日志。如图所示:,内存中的数据库示意图,数据库的数据缓冲区,数据库的日志缓冲区,数据页,数据页,数据页,内存,5.1

3、.3 硬磁盘,硬磁盘又称温切斯特盘(Winchester),它的工作原理是:在一个塑料盘片上涂上小磁粉颗粒,颗粒有磁时表示“1”、无磁时表示”0”结构如图所示:,1、磁盘结构,柱面,2、技术指标,盘片:一个硬盘由一组两面涂有磁粉的盘片组成。磁道:为了在盘片上存储信息,必须把盘片分成若干个同心圆,然后在其上存储信息,我们把这些同心圆称为磁道。扇区(扇段或盘块):为了读取信息方便,我们用扇形把磁道等分成若干段,我们称它们为扇段(扇区或盘块)。磁盘上的所有扇段(不论扇段的长短)都存储相同容量的信息,盘块大小与操作系统有关,一般是512KB。盘块是OS寻址的最小单位,既OS向磁盘读写数据的最小单位。,

4、2、技术指标,柱面:我们把由所有盘面上相同磁道所够成的哪一部分存储空间,称为一个柱面。磁盘容量:盘片总数2每个盘面的磁道数磁道的盘块数每个盘块的字节数在磁盘上定位数据:操作系统通过(柱面号,磁头号,盘块号)三个参数来定位磁盘上的数据。OS对整个盘的盘块进行统一编址,编址的方法是:,2、技术指标,假如磁盘有20个盘面,每面上有200个磁道。每个磁道上有17个扇段。柱面编号:由内向外依此编为 0、1、2 199。磁道编号:磁道编号按柱面号顺序进行编号。0 柱面的20个盘面上的磁道从上到下编为:0、1、2、19,1 柱面的20个盘面上的磁道从上到下编为:20、21、39,依此类推。盘块编号:盘块编号

5、按磁道号顺序编写。0 号磁道上的17个扇段依此编为 0、1、2、16,1 号磁道上的17个扇段编为 17、18、33,依此类推。,3、磁盘文件,操作系统对存储到磁盘中的数据,采用文件形式进行管理。每个文件有一个文件名,数据存储在文件中。操作系统为每个磁盘创建一个文件分配表结构如下:,3、磁盘文件,3、磁盘文件,一个文件包含多个盘块,盘块之间指针链接起来。一个盘块只存储一个文件的数据,既一个盘块不能存储不同文件文件的数据。当用户要访问文件时,操作系统首先从磁盘的文件分配表中找到此文件,然后根据文件分配表的信息将该文件的盘块调入内存,操作系统从磁盘往内存调数据的最小单位是一个盘块(扇区)。,5.1

6、.4 磁盘阵列,目前,数据库中的数据量越来越大,数据的安全性要求越来越高。用单块磁盘存储数据库数据已不满足要求。1987年,Gibson和Katz在加洲大学伯克利分校发表文章,首先提出了“磁盘阵列”概念。,5.1.4 磁盘阵列,独立冗余磁盘阵列最初叫做廉价冗余磁盘阵列(Redundant Array of Inexpensive Disks),它是由多个类型、容量、接口,甚至品牌一致的小容量、独立的硬盘组成的阵列,而阵列综合的性能可以超过单一昂贵大容量硬盘(SLED)的性能。由于是对多个磁盘并行操作,所以RAID磁盘子系统与单一磁盘相比它的输入输出性能得到了提高。服务器会把RAID阵列看成一个

7、单一的存储单元,并对几个磁盘同时访问,所以提高了输入输出的速率。,5.1.4 磁盘阵列,RAID技术主要包含RAID 0RAID 7等数个规范,它们的侧重点各不相同,具体如下:,1、RAID 0,RAID 0连续以位或字节为单位分割数据,并行读/写于多个磁盘上,因此具有很高的数据传输率,但它没有数据冗余,因此并不能算是真正的RAID结构。RAID 0只是单纯地提高性能,并没有为数据的可靠性提供保证,而且其中的一个磁盘失效将影响到所有数据。因此,RAID 0不能应用于数据安全性要求高的场合。,RAID 0示意图,2、RAID 1,它是通过磁盘数据镜像实现数据冗余,在成对的独立磁盘上产生互 为备份

8、的数据。当原始数据繁忙时,可直接从镜像拷贝中读取数据,因此RAID 1可以提高读取性能。RAID 1是磁盘阵列中单位成本最高的,但提供了很高的数据安全性和可用性。当一个磁盘失效时,系统可以自动切换到镜像磁盘上读写,而不需要重组失效的数据。,RAID 1 示意图,3、RAID 0+1,这种模式其实是RAID 0和RAID 1的组合,它至少需要四块盘。先由两块盘够成RAID 0阵列,再把两个RAID 0阵列构成RAID 1阵列。优点是:既可提高数据的可靠性,又可适当提高读写速度。,RAID 0+1示意图,5.2 数据库的存储结构,数据库最终要存储到计算机的磁盘中。而磁盘是由操作系统的文件管理子系统

9、来管理的,大家知道操作系统对存储在磁盘中的数据是以文件形式来管理的。因此DBMS对数据库的存储结构设计必须符合操作系统的文件技术规范。我们先来看看操作系统文件的相关概念。,操作系统文件简介,操作系统逻辑文件是指用户、应用程序所感知道的文件组织形式。从结构上可分成两大类:字符流式无结构文件和记录式有结构文件,而记录式有结构文件又可进一步分为:连续结构、多重结构、转置结构、顺序结构四种。从存取方法上可分为:顺序存取、随机存取、按键存取三种。,操作系统文件概述,存储数据库数据的数据库文件采用的是OS的记录式有结构文件,如图所示:,记录式有结构文件示意图,OS结构文件,记录的结构,STRUCT Stu

10、dent SID String;SName String;BirthDay DateTime,5.2.2 数据库文件的记录结构设计,数据库中各种数据的结构不相同,那么,我们应如何设计数据库文件的记录结构,才能使数据库的各种数据都能存储在文件中呢?这里面临的问题是:数据库文件的记录是采用定长结构还是变长结构,这就是文件组织问题。,1、定长记录,所谓定长记录结构就是文件的记录采用统一的长度。定长记录结构的文件如图所示:,数据库中的“学生”表,数据库中的“课程”表,数据库文件,2、变长记录,所谓变长记录结构就是存储数据的文件记录不采用统一的长度。变长记录结构如图所示:,分槽式页结构,记录大小,记录位

11、置,5.2.3 数据库文件中记录的逻辑联系,在数据库中,基本表之间是有联的,基本表的元组之间是有顺序的。那么如何在数据库文件中体现出这些联系和顺序,以便我们能实现对数据的快速查找呢?显然,应该通过文件的“记录”之间的逻辑顺序和联系来体现。记录式文件的记录组织结构有以下四种:,1、堆文件,在这种组织中,记录可以放在文件的任何位置,一般以输入顺序为序。记录的存储顺序与关键字无关,插入记录总是在文件尾部。,2、顺序文件,在这种组织中,记录是按查找键值升序或降序顺序存储。,3、散列文件,按记录的某个数据项的值,通过散列函数求出一个散列值,然后用此值作为该记录的存储位置值。,4、聚集文件,在这种组织中,

12、一个文件可以存储多个关系的元组。这样一来,能提高对多个关系之间进行联接查找的速度。,5.2.4 SQLServer数据库的存储结构,从存储角度看,一个SQLServer数据库由若干个文件组构成(1 n 256),一个数据库至少要有一个主文件组(PRIMARY)。一个文件组可以包含若干个文件。一个数据库文件的总数:1m32767。一个数据库必须有一个主文件,主文件的扩展名为(.mdf),其它文件称为次要文件,次要文件的扩展名为(.ndf)。,5.2.4 SQLServer数据库的存储结构,系统为每个文件分配一个唯一标识号。例如01、02、。,1、基本表与文件组之间的关系,用户只能指示把表放在哪个

13、文件组中,不能直接指示把表放到哪个文件中。如果一个文件组包含多个文件(例如:两个表),那么系统将存放在该文件组的基本表的数据平均地分配到各文件中。,2、SQLServer数据库文件,一个SQLServer数据库由数据文件和日志文件两类文件组成。数据文件用来存储数据库各种对象的数据(例如:表、视图、存储过程等);日志文件用来记录事务对数据的更新。数据文件的结构如下图所示:,数据文件结构图,页,页,页,页,页,一般我们把数据库的数据文件称为数据库文件。数据库文件有一系列“页”构成。,数据文件页编号,数据文件的页按顺序编号,文件首页的页码是 0。每个文件都有一个文件 ID 号。在数据库中唯一标识一页

14、需要同时使用文件 ID 和页码。,3、页,SQLServer数据存储的基本单位是页,一个页对应8K连续的磁盘块。页是SQLServer进行内/外存数据交换的最小单位。每页的开始部分是 96 字节的页首,用于存储系统信息,如页的类型、页的可用空间量、拥有页的对象的对象 ID 等 SQLServer页有以下类型:,页结构图,行偏移量,4、页与表中元组之间关系,在 SQL Server 中,行不能跨页。在 SQL Server 2000 中,一行内最多包含的数据量是 8060 字节,不包括 text、ntext 和 image 数据。,4、页与表中元组之间关系,由上述规定可知:基本表的每行字节数:8

15、,060,既创建表时,各字段的最大占用空间总数不能超过8060B。一个表每行字节数越小,一个页中存放该表元组的数量就越多,因此查询速度就越快,5、页组,为了减少内部操作和增加I/O效率,SQL Server在向表和索引分配存储空间时是按页组分配的。一个页组(扩展盘区)等于8个连续页,即64KB。,5.3 索引,表中的元组在磁盘中只能有一个物理存储位置,而用户每次查找元组时,所要的元组顺序(逻辑顺序)经常与元组的存储顺序(物理顺序)不一致,如果每次DBMS都按元组的存储顺序去扫描元组,查找速度可能会很慢。这很像去图书馆借书。书在书库有个存放顺序(物理顺序),如果你按这个顺序去找书,最好情况是一次

16、就找到了你所要的书,最坏情况是把书库中的书整个查找一遍,最后才找到你所要的书,总之,平均速度很慢。,5.3 索引,那么,图书馆是怎么解决这个问题的呢?图书馆是为每本书建立一些卡片,在卡片中记录书的基本信息及其所在位置,然后按某种逻辑顺序(例如:出版业,作者,书所属的学科)将卡片放在一起,这便构成了书的各种逻辑顺序。他们称此为“图书目录”或“图书索引”。我们在数据库中也可以使用此方法。,5.3 索引,对“基本表”的元组,按某个或某几个字段值的某种顺序(逻辑顺序)建立一个目录文件,此目录文件按逻辑顺序排列元组,并记录元组的存储位置。我们把这种目录文件称为该表的索引。索引文件结构如图所示:,索引,元

17、组在文件中的顺序,索引图1,索引,元组在文件中的顺序,索引图2,5.3.1 索引概念,1、查找键用于查找元组(记录)的属性集。它不一定是关系的主键。2、主文件存放关系的磁盘文件。3、元组(记录)的物理位置、顺序元组在存储文件(主文件)的存储位置、顺序。,5.3.1 索引概念,4、索引文件对一个关系的记录按某个查找键值的某种顺序建立的文件。索引文件简称索引。5、记录的索引顺序(逻辑顺序)记录在索引文件的排列顺序。6、索引文件的开销索引可以提高查询速度,但索引是需要系统付出代价的,这体现在以下两个方面:,5.3.1 索引概念,空间代价索引需要占用存储空间。维护代价用户一但对索引所在的基本表进行插入

18、、删除操作或对基本表元组的查找键值进行修改操作,DBMS就要重新整理(维护)索引。因此我们可以得出以下结论:,5.3.1 索引概念,对一个基本表来说,不是索引建的越多越 好。尽量不要用更新频繁的属性集作为查找键来建立索引。,5.3.2 索引分类,对于一个基本表来说,索引可以分为聚集索引和非聚集索引两大类。1、聚集索引查找键值在索引中顺序与在主文件中的物理存储顺序保持一致。2、非聚集索引查找键值在索引中顺序与在主文件中的物理存储顺序不保持一致。,5.3.3 SQLServer的索引概念,1、聚集索引 在聚集索引中,表中各行的物理顺序与索引顺序保持一致。一个表只能有一个聚集索引。(如图2)SQLS

19、erver默认地用每个表的主键做为查找键来为表创建聚集索引。,5.3.3 SQLServer的索引概念,2、非聚集索引在非聚集索引中,表中各行的物理顺序与索引顺序不保持一致。一个表最多只能有249个非聚集索引。(如图1),5.3.3 SQLServer的索引概念,3、唯一索引唯一索引可以确保索引列不包含重复的值。在多列唯一索引的情况下,该索引可以确保索引列中每个值组合都是唯一的。聚集索引和非聚集索引都可以是唯一的。因此,只要列中的数据是唯一的,就可以在同一个表上创建一个唯一的聚集索引和多个唯一的非聚集索引。,3、唯一索引,只有当唯一性是数据本身的特征时,指定唯一索引才有意义。如果必须实施唯一性

20、以确保数据的完整性,则应在列上创建 UNIQUE 或 PRIMARY KEY 约束,而不要创建唯一索引。例如,如果打算经常查询雇员表(主键为 emp_id)中的社会安全号码(ssn)列,并希望确保社会安全号码的唯一性,则在 ssn 列上创建 UNIQUE 约束。,3、唯一索引,创建 PRIMARY KEY 或 UNIQUE 约束会在表中指定的列上自动创建唯一索引。在同一个列组合上创建唯一索引而不是非唯一索引可为查询优化器提供附加信息;所以最好创建唯一索引。,5.3.4 使用索引的原则,1、索引使用的一般原则 衡量是否为一个表建立索引的原则对数据量很大,并且查询频度高的表要建立索引。覆盖的查询可

21、以提高性能。覆盖的查询是指查询中所有指定的列都包含在同一个索引中。,衡量是否为一个表建立索引的原则,对小型表进行索引可能不会产生优化效果,因为 SQL Server 在遍历索引以搜索数据时,花费的时间可能会比简单的表扫描还长。一个表如果建有大量索引会影响 INSERT、UPDATE 和 DELETE 语句的性能,因为在表中的数据更改时,所有索引都须进行适当的调整。,衡量是否为一个表建立索引的原则,应使用 SQL 事件探查器和索引优化向导帮助分析查询,确定要创建的索引。,1、索引使用的一般原则,衡量是否为一个列创建索引的原则应考虑被索引的列是否以及如何用于查询中。索引对下列查询很有帮助:搜索符合

22、特定搜索关键字值的行(精确匹配查询)。精确匹配比较是指查询使用 WHERE 语句指定具有给定值的列条目。例如:WHERE emp_id=VPA30890F,衡量是否为一个列创建索引的原则,搜索其搜索关键字值为范围值的行(范围查询)。范围查询是指查询指定其值介于两个值之间的任何条目。例如:WHERE job_lvl BETWEEN 9 and 12 或 WHERE job_lvl=9 and job_lvl=12,衡量是否为一个列创建索引的原则,在表 T1 中搜索根据联接谓词与表 T2 中的某个行匹配的行(索引嵌套循环联接)。在不进行显式排序操作的情况下产生经排序的查询输出,尤其是经排序的动态游

23、标。在不进行显式排序操作的情况下,按一种有序的顺序对行进行扫描,以允许基于顺序的操作,如合并联接和流聚合。,衡量是否为一个列创建索引的原则,以优于表扫描的性能对表中所有的行进行扫描,性能提高是由于减少了要扫描的列集和数据总量(该查询有覆盖索引可供使用)。搜索插入和更新操作中重复的新搜索关键字值,以实施 PRIMARY KEY 和 UNIQUE 约束。,衡量是否为一个列创建索引的原则,搜索已定义了 FOREIGN KEY 约束的两个表之间匹配的行。使用 LIKE 比较进行查询时,如果模式以特定字符串如abc%开头,使用索引则会提高效率;如果模式以通配符如%xyz开头,则索引不起作用。,5.3.4

24、 使用索引的原则,2、聚集索引使用原则以下情形可以考虑使用聚集索引:包含大量非重复值的列。使用下列运算符返回一个范围值的查询:BETWEEN、=、和=。被连续访问的列。返回大型结果集的查询。经常被使用联接或 GROUP BY 子句的查询访问的列;一般来说,这些是外键列。,2、聚集索引使用原则,以下情形不能使用聚集索引:频繁更改的列。已经在非聚集索引作为查找键使用的列。,5.3.4 使用索引的原则,3、非聚集索引使用原则在创建非聚集索引之前,应先了解您的数据是如何被访问的。可考虑将非聚集索引用于包含大量非重复值的列,如姓氏和名字的组合(如果聚集索引用于其它列)。如果只有很少的非重复值,如只有 1 和 0,则大多数查询将不使用索引,因为此时表扫描通常更有效。,3、非聚集索引使用原则,不返回大型结果集的查询。返回精确匹配的查询的搜索条件(WHERE 子句)中经常使用的列。在特定的查询中覆盖一个表中的所有列。这将完全消除对表或聚集索引的访问。经常需要联接和分组的决策支持系统应用程序。应在联接和分组操作中使用的列上创建多个非聚集索引,在任何外键列上创建一个聚集索引。,5.3.5 创建索引,1、使用CREATE INDEX创建索引,5.3.5 创建索引,2、使用“企业管理器”创建索引,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号