数据库物理结构设计资料
【例6.17】重新生成索引。Employee中重新生成单个索引。 SQL Server 2005语句: USE AdventureWorks ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee REBUILD
【例6.18】重新生成表的所有索引。使用ALL关键字,重新生成 与表相关联的所有索引。 SQL Server 2005语句: USE AdventureWorks; ALTER INDEX ALL ON Production.Product REBUILD
6.2 选择存取方法
例如:一本字典是由字典正文和字典索引连部分组成。字典索引相当于索 引表,字典正文相当于数据表。字典索引和字典正文一起配合使用实现查 询字的用法。具体查询过程如下: (1)首先在字典索引中,查询字在字典中的页码。 (2)然后按照页码,字典正文中找到该字的用法。 思考题1:对于任意数据表,使用索引机制进行检索与不使用索引机制而 直接对数据表进行检索相比,是否前者一定比后者快? 思考题2:在什么情况下,使用索引机制可以进行快速检索? 常用的存取方法括: 平衡树(Balance Tree,B树)、聚簇(Cluster)和散列索引。 其中:B树索引是最常用的存取方法,具体操作见数据结构。
结论:通过对比各项指标,选择适合应用的合理的最佳物理
结构。
6.7 SQL Server 2005的索引机制
建立索引
修改索引 删除索引
1 建立索引
格式:CREATE [UNIQUE] [CLUSTER] INDEX <索引名>
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…) 功能:对指定的数据表,按照指定的属性列以升序或者降序建立索引。 说明: 1)<索引名>:索引的名称。索引名必须符合标识符的规则。 2)<表名>:索引的基本表名称。 3)索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 4)<次序>指索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC。 5)UNIQUE:索引的每一个索引值,只对应唯一的记录。即:唯一索引。 6)CLUSTER:建立聚簇索引。对数据表建立聚簇索引后,表中数据也需要按 指定的聚簇属性值的升序或降序存放。亦即:聚簇索引的索引项顺序与表 中记录的物理顺序一致。 7)索引的维护由DBMS自动完成。 8)索引的使用由DBMS自动选择是否使用索引以及使用哪些索引。
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提供了数据库、索引文件、聚日志文件、备份文件等文件的默认文件
目录结构及其存储路径。为提高系统性能,需要进一步设计存放。 例如:SQL 2005的数据库,可以设置数据库和日志文件的存储路径等。 存储位置设计的基本原则: 1)同一类文件存放在同一个目录。 2)易变部分与稳定部分应该分开存放。 3)存取频率高的部分和低的部分应该分别存放到快速和慢速设备。 例如:对于多磁盘计算机系统,为了提高系统性能,可以采用如下方案: 方案1:把数据表和索引文件放在不同的磁盘上,使多磁盘并行工作。 方案2:把大数据表分别放在不同的磁盘上,提高数据的存取速度。 方案3:把日志文件和数据库分别放在不同磁盘上,使多磁盘并行工作。 方案4:把数据库放在高速磁盘;把备份(即后备副本)放在磁带。 例如:例6.8的R(R1,…,R6)存入高速磁盘,S(R7,…,R20)存入光盘。 4)根据应用系统的文件类型和应用需求,统一设计文件目录结构。统一考虑 存取时间、存储空间、维护费用等,对数据文件进行合里安排。
聚簇索引(了解)
聚簇:指根据索引关键属性的值直接找到数据的物理存储位置,从而达到快
速检索数据的目的,提高检索的效率。 聚簇索引:指在按照关键属性对数据表建立索引时,同时按照索引顺序对数 据表的相应元组的物理存储位置进行排序,使索引的顺序与数据表中相应元 组的物理顺序始终保持一致的索引过程。 聚簇索引与非聚簇索引的区别: 1)聚簇索引的顺序与数据的物理存储顺序始终保持一致;非聚簇索引的顺序与 数据物理排列顺序无关。 2)聚簇索引B+树的叶节点就是数据节点;非聚簇索引B+树的叶节点仍然是索引 节点,其指针指向对应的元组或者数据块。 3)一个数据表只能有一个聚簇索引;非聚簇索引则可有多个。 4)建立和维护非聚簇索引的开销相对较小,而聚簇索引的开销则相当大。 5)聚簇索引适合于不需要更新或者更新比较少的应用,非聚簇索引则适合于更 新比较多的应用。 6)聚簇索引灵活性较差不建议经常适应,非聚簇索引性则相对比较灵活。
【例6.19】禁用索引。禁用Employee的非聚集索引
IX_Employee_ManagerID。 SQL Server 2005语句: USE AdventureWorks ALTER INDEX IX_Employee_ManagerID ON HumanResources.Employee DISABLE 【例6.20】启用索引。启用Employee的非聚集索引 IX_Employee_ManagerID。 SQL Server 2005语句: USE AdventureWorks ALTER INDEX IX_Employee_ManagerID ON HumanResources.Employee REBUILD
温馨提示:已经包含重复值的属性列,不能建立UNIQUE索引。对
于建立UNIQUE索引的属性列,插入新记录时DBMS会自动检查新记 录在该列上是否取了重复值。相当于给属性列增加UNIQUE约束。
【例6.11】
在Student表的SName(姓名)列上建立一个聚簇索引,而且
Student表中的记录将按照SName值的升序存放。SQL Server 2005语句如下: CREATE CLUSTERED INDEX StudentSName ON Student(SName)
3 删除索引
格式:DROP INDEX <表名>.<索引名>
功能:从当前数据库中删除索引。 说明:
(1)用<索引名>指定要删除索引的名称。 (2)用<表名>指定要删除索引的基本表名称。 温馨提示:删除索引时,系统会从数据字典中删去有关该索 引的描述。
【例6.21】删除Student的SName列上的聚簇索引StudentSName。 SQL Server 2005语句: DROP INDEX Student.StudentSName
数据库技术
● 讲授1学时
电子教案 版本6.6
●内容概述
6.1 6.2 6.3 6.4 6.5 6.6 6.7
物理结构设计的内容 选取存取方法 设计存储结构 确定存储位置 选取存储介质 评价物理结构 SQL Server 2005的索引机制
教学进程
6.1 物理结构设计的内容
物理结构:指数据库在存储介质上的存取方法、存储结构和存放位置。 物理结构设计:指根据逻辑结构设计的结果,设计逻辑结构的最佳存取方
ቤተ መጻሕፍቲ ባይዱ
【例6.10】
StudentTestDB中,给Student,Course,StudentCourse建立索
引。 (1)Student表按学号升序建唯一索引 (2)Course表按课程号升序建唯一索引 (3)StudentCourse表按学号升序和课程号降序建唯一索引。 SQL Server 2005 语句: CREATE UNIQUE INDEXStudentSNo ON Student(SNo) CREATE UNIQUE INDEXCourseCNo ON Course(CNo) CREATE UNIQUE INDEXSCSNoCNo ON StudentCourse(SNo ASC, CNo DESC)
法、存储结构和存放位置以及合理选择存储介质等,从而设计出适合逻辑 结构的最佳物理环境(即:存储模式)的过程。 物理结构设计的内容:选取存取方法、设计存储结构、确定存放位置以及 选择存储介质等,因素包括:访问类型、访问时间、插入时间、删除时间 和空间开销等。 (1)存取方法:指用户存取数据库数据的方法和技术。 (2)存储结构:指根据逻辑结构的指标以及DBMS支持的数据类型, 所确定的数据项的存储类型和长度以及元组的存储结构等 即:数据文件及其数据项在介质上的具体存储结构。 (3)存放位置:指根数据库文件和索引文件等在介质上的具体存储位置。 (4)存储介质:指用于存储文件的物理存储设备。 包括:磁盘、磁带、光盘、磁盘阵列、磁带库、光盘阵列等。 具体包括:介质的容量大小、存取速度与费用等。
6.6 评价物理结构
对设计的多种物理结构,通过评价,选择最佳的物理结构。
评价物理结构:包括评价内容、评价指标和评价方法。 评价内容:存取方法选取的正确性、存储结构设计的合理性、
文件存放位置的规范性、存储介质选取的标准性。 评价指标:存储空间的利用率、存取数据的速度和维护费用 等。 评价方法:根据物理结构的评价内容,统计存储空间的利用 率、数据的存取速度和维护费用指标
聚簇索引(了解)