您好,欢迎访问三七文档
●讲授1学时电子教案版本6.6数据库技术●内容概述教学进程6.1物理结构设计的内容6.2选取存取方法6.3设计存储结构6.4确定存储位置6.5选取存储介质6.6评价物理结构6.7SQLServer2005的索引机制6.1物理结构设计的内容物理结构:指数据库在存储介质上的存取方法、存储结构和存放位置。物理结构设计:指根据逻辑结构设计的结果,设计逻辑结构的最佳存取方法、存储结构和存放位置以及合理选择存储介质等,从而设计出适合逻辑结构的最佳物理环境(即:存储模式)的过程。物理结构设计的内容:选取存取方法、设计存储结构、确定存放位置以及选择存储介质等,因素包括:访问类型、访问时间、插入时间、删除时间和空间开销等。(1)存取方法:指用户存取数据库数据的方法和技术。(2)存储结构:指根据逻辑结构的指标以及DBMS支持的数据类型,所确定的数据项的存储类型和长度以及元组的存储结构等即:数据文件及其数据项在介质上的具体存储结构。(3)存放位置:指根数据库文件和索引文件等在介质上的具体存储位置。(4)存储介质:指用于存储文件的物理存储设备。包括:磁盘、磁带、光盘、磁盘阵列、磁带库、光盘阵列等。具体包括:介质的容量大小、存取速度与费用等。物理结构设计的方法:(1)选择存取方法。(2)设计存储结构。(3)确定存放位置。(4)选取存储介质。(5)评价物理结构。结论:通过存取方法、存储结构、存放位置以及存储介质的合理设计,最终为逻辑模式设计出满足应用需求的最佳存储模式。6.2选择存取方法实现数据库快速访问的最有效方法是使用索引机制。索引机制是指对于数据库的数据表,根据数据表的查询需要,按照查询数据所对应的关键属性,为数据表建立相应的用于快速检索的索引文件,在执行查询操作时,先在索引文件中找到查询的元组在数据表中位置(地址),然后再根据这个地址,去数据表中直接取出元组数据。这种先查询索引文件,再从数据表中取值的检索机制称为索引机制。索引表是指把关键属性(例如:主键)的值按照升序(或者降序)排序后,与它对应的元组在数据表中的位置所组成的对照表。即:索引表是索引属性值与元组地址的对照表。索引文件用于存储索引表的文件。温馨提示:索引文件需要配合数据文件一起使用,才能进行快速检索,因此索引文件单独使用没有意义。6.2选择存取方法例如:一本字典是由字典正文和字典索引连部分组成。字典索引相当于索引表,字典正文相当于数据表。字典索引和字典正文一起配合使用实现查询字的用法。具体查询过程如下:(1)首先在字典索引中,查询字在字典中的页码。(2)然后按照页码,字典正文中找到该字的用法。思考题1:对于任意数据表,使用索引机制进行检索与不使用索引机制而直接对数据表进行检索相比,是否前者一定比后者快?思考题2:在什么情况下,使用索引机制可以进行快速检索?常用的存取方法括:平衡树(BalanceTree,B树)、聚簇(Cluster)和散列索引。其中:B树索引是最常用的存取方法,具体操作见数据结构。聚簇索引(了解)聚簇:指根据索引关键属性的值直接找到数据的物理存储位置,从而达到快速检索数据的目的,提高检索的效率。聚簇索引:指在按照关键属性对数据表建立索引时,同时按照索引顺序对数据表的相应元组的物理存储位置进行排序,使索引的顺序与数据表中相应元组的物理顺序始终保持一致的索引过程。聚簇索引与非聚簇索引的区别:1)聚簇索引的顺序与数据的物理存储顺序始终保持一致;非聚簇索引的顺序与数据物理排列顺序无关。2)聚簇索引B+树的叶节点就是数据节点;非聚簇索引B+树的叶节点仍然是索引节点,其指针指向对应的元组或者数据块。3)一个数据表只能有一个聚簇索引;非聚簇索引则可有多个。4)建立和维护非聚簇索引的开销相对较小,而聚簇索引的开销则相当大。5)聚簇索引适合于不需要更新或者更新比较少的应用,非聚簇索引则适合于更新比较多的应用。6)聚簇索引灵活性较差不建议经常适应,非聚簇索引性则相对比较灵活。聚簇索引(了解)使用聚簇索引注意:(1)经常进行连接操作的数据表建议使用聚簇索引。(2)对于属性组的利用率很高或者重复率很高的关系建议使用聚簇索引。(3)需要经常进行插入、删除或修改等更新操作,不建议使用聚簇索引。(4)对于更新操作远多于连接操作的关系不建议使用聚簇索引。温馨提示:聚簇索引虽然可以提高某些应用的性能,但是会改变数据的物理存储位置,而且会导致数据表的原有索引无效,同时维护费用很大,因此需要谨慎使用。6.3设计存储结构存储结构设计的内容:存储的关系模式;关系模式的数据项;数据项的类型,宽度,是否主键,是否外键,是否索引键等。【例6.8】:如果关系R(R1,…,R6,R7,…,R20),包含20个属性,但是前6个属性的利用率非常高,而其它属性的利用率非常低,则存储时可以按照R(R1,…,R6),S(R7,…,R20)两个关系进行存储(即:垂直分割),并通过逻辑模式/存储模式映像作相应的调整。思考题:如果关系R(R1,…,R6,R7,…,R20),包含60万个元组,但是前6万个元组的利用率非常高,而其它元组的利用率非常低,则应该如何设计存储结构。温馨提示:建立两个同结构关系(即:水平分割)。6.4确定存储位置DBMS提供了数据库、索引文件、聚日志文件、备份文件等文件的默认文件目录结构及其存储路径。为提高系统性能,需要进一步设计存放。例如:SQL2005的数据库,可以设置数据库和日志文件的存储路径等。存储位置设计的基本原则:1)同一类文件存放在同一个目录。2)易变部分与稳定部分应该分开存放。3)存取频率高的部分和低的部分应该分别存放到快速和慢速设备。例如:对于多磁盘计算机系统,为了提高系统性能,可以采用如下方案:方案1:把数据表和索引文件放在不同的磁盘上,使多磁盘并行工作。方案2:把大数据表分别放在不同的磁盘上,提高数据的存取速度。方案3:把日志文件和数据库分别放在不同磁盘上,使多磁盘并行工作。方案4:把数据库放在高速磁盘;把备份(即后备副本)放在磁带。例如:例6.8的R(R1,…,R6)存入高速磁盘,S(R7,…,R20)存入光盘。4)根据应用系统的文件类型和应用需求,统一设计文件目录结构。统一考虑存取时间、存储空间、维护费用等,对数据文件进行合里安排。6.6评价物理结构对设计的多种物理结构,通过评价,选择最佳的物理结构。评价物理结构:包括评价内容、评价指标和评价方法。评价内容:存取方法选取的正确性、存储结构设计的合理性、文件存放位置的规范性、存储介质选取的标准性。评价指标:存储空间的利用率、存取数据的速度和维护费用等。评价方法:根据物理结构的评价内容,统计存储空间的利用率、数据的存取速度和维护费用指标结论:通过对比各项指标,选择适合应用的合理的最佳物理结构。6.7SQLServer2005的索引机制建立索引修改索引删除索引1建立索引格式:CREATE[UNIQUE][CLUSTER]INDEX索引名ON表名(列名[次序][,列名[次序]]…)功能:对指定的数据表,按照指定的属性列以升序或者降序建立索引。说明:1)索引名:索引的名称。索引名必须符合标识符的规则。2)表名:索引的基本表名称。3)索引可以建立在该表的一列或多列上,各列名之间用逗号分隔4)次序指索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC。5)UNIQUE:索引的每一个索引值,只对应唯一的记录。即:唯一索引。6)CLUSTER:建立聚簇索引。对数据表建立聚簇索引后,表中数据也需要按指定的聚簇属性值的升序或降序存放。亦即:聚簇索引的索引项顺序与表中记录的物理顺序一致。7)索引的维护由DBMS自动完成。8)索引的使用由DBMS自动选择是否使用索引以及使用哪些索引。【例6.10】StudentTestDB中,给Student,Course,StudentCourse建立索引。(1)Student表按学号升序建唯一索引(2)Course表按课程号升序建唯一索引(3)StudentCourse表按学号升序和课程号降序建唯一索引。SQLServer2005语句:CREATEUNIQUEINDEXStudentSNoONStudent(SNo)CREATEUNIQUEINDEXCourseCNoONCourse(CNo)CREATEUNIQUEINDEXSCSNoCNoONStudentCourse(SNoASC,CNoDESC)温馨提示:已经包含重复值的属性列,不能建立UNIQUE索引。对于建立UNIQUE索引的属性列,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。相当于给属性列增加UNIQUE约束。【例6.11】在Student表的SName(姓名)列上建立一个聚簇索引,而且Student表中的记录将按照SName值的升序存放。SQLServer2005语句如下:CREATECLUSTEREDINDEXStudentSNameONStudent(SName)温馨提示:在一个数据表上最多只能建立一个聚簇索引。6.7.2修改索引格式:ALTERINDEX{索引名|ALL}ON表名{REBUILD|DISABLE}功能:修改现有的数据表索引或者视图索引。说明:(1)索引名:修改索引的名称。(2)ALL指定与表或视图相关联的所有索引。(3)表名:修改索引的基本表名称。(4)REBUILD:重新生成索引。(5)DISABLE:禁用索引。任何索引均可被禁用。【例6.17】重新生成索引。Employee中重新生成单个索引。SQLServer2005语句:USEAdventureWorksALTERINDEXPK_Employee_EmployeeIDONHumanResources.EmployeeREBUILD【例6.18】重新生成表的所有索引。使用ALL关键字,重新生成与表相关联的所有索引。SQLServer2005语句:USEAdventureWorks;ALTERINDEXALLONProduction.ProductREBUILD【例6.19】禁用索引。禁用Employee的非聚集索引IX_Employee_ManagerID。SQLServer2005语句:USEAdventureWorksALTERINDEXIX_Employee_ManagerIDONHumanResources.EmployeeDISABLE【例6.20】启用索引。启用Employee的非聚集索引IX_Employee_ManagerID。SQLServer2005语句:USEAdventureWorksALTERINDEXIX_Employee_ManagerIDONHumanResources.EmployeeREBUILD3删除索引格式:DROPINDEX表名.索引名功能:从当前数据库中删除索引。说明:(1)用索引名指定要删除索引的名称。(2)用表名指定要删除索引的基本表名称。温馨提示:删除索引时,系统会从数据字典中删去有关该索引的描述。【例6.21】删除Student的SName列上的聚簇索引StudentSName。SQLServer2005语句:DROPINDEXStudent.StudentSName【例6.22】删除ProductVendor的索引IX_ProductVendor_VendorID。SQLServer2005语句:USEAdventureWorksDROPINDEXIX_ProductVendor_VendorIDONPurchasing.ProductVendor【例6.23】删除多个索引。删除单个事务中的两个索引。SQLServer2005语句:USEAdventureWorksDROPINDEXIX_PurchaseOrderHeader_EmployeeIDONPurchasing.PurchaseOrderHeader,I
本文标题:数据库物理结构设计
链接地址:https://www.777doc.com/doc-2333068 .html