上一篇文章我们在文末介绍了数据库物理设计的索引,本文我们继续介绍数据库的物理设计
索引技术分类
有序索引
索引文件机制,利用索引文件(索引记录组成)实现记录域(查找码,排序域)取值到记录物理地址间的映射关系。
数据文件(主文件)和索引文件(索引记录或索引项的集合)是有序索引技术中的两个主体,数据文件常采用顺序文件结构。
散列索引
哈希(Hash)索引机制,利用散列函数实现记录域取值到记录物理地址间的直接映射关系。
几种主要的有序索引
(1)聚集索引(索引项与数据记录排列顺序一致,索引顺利文件)和非聚集索引。一个数据文件只可建立一个聚集索引,但可建立多个非聚集索引。
(2)稠密索引(数据文件中每个查找码都对应索引么记录)和稀疏索引(部分查找码的值对应索引记录)。
(3)主索引(主码属性集上建立的索引)与辅索引(非主属性上建立的索引)。
(4)唯一索引(索引列不包含重复值)
(5)单层索引(线性索引,每个索引项顺序排列直接指向数据文件中的数据记录)和多层索引(大数据量文件中的采用多层树型(B,B+树)索引快速定位)。
数据库物理设计的目标
目标是得到存储空间占用少,数据访问效率高和维护代价低的数据库物理模式。数据库底层物理存储与存取,与DBS所依赖的硬件环境、操作系统和DBMS密切相关。目前绝大部分DBS都是关系数据库系统。
环节
数据库物理设计主要包括5个环节。
(1)数据库逻辑模式描述
根据数据库逻辑结构信息设计目标DBMS可支持的关系表(这里称为基本表)的模式信息,这个过程称为数据库逻辑模式描述。
关系模式及其视图转换成基本表和视图,利用完整性机制(如触发器)设计面向应用的业务规则。
SQL Server 采用T-SQL语言。
为基本表选择合适的文件结构(堆文件、顺序文件、聚集文件、索引文件和散列文件)。
(2)文件组织与存取设计
基本原则
根据应用情况将易变部分与稳定部分、存取频率较高部分与存取频率较低部分分开存放,以提高系统性能。
分析理解数据库事务访问特性:使用事务-基本表交叉引用矩阵;估计各事务执行频率;汇总每张基本表各事务操作频率信息;根据结果设计文件结构。
注意:可以考虑将表和索引分别放在不同的磁盘上。在查询时,由于两个磁盘驱动器分别在工作,因而可以保证物理读写速度比较快。
影响数据文件存储结构的因素
存取时间
存储空间利用率
维护代价
这三个方面常常是相互矛盾的
解决办法
适当冗余
增加聚簇功能
必须进行权衡,选择一个折中方案。
什么是存储路径
在关系数据库中,选择存取路径主要指确定如何建立索引。
对同一个关系要建立多条存取路径才能满足多用户的多种应用要求。
物理设计的第一个任务就是要确定选择哪些存取方法。
DBMS常用存取方法
索引方法,目前主要是B+树索引方法
聚簇(Cluster)方法
HASH方法
建立索引原则
一个(组)属性经常在操作条件中出现。
一个(组)属性经常在连接操作的连接条件中出现。
一个(组)属性经常作为聚集函数的参数。
建立聚集索引原则
检索数据时,常以某个(组)属性作为排序、分组条件。
检索数据时,常以某个(组)属性作为检索限制条件,并返回大量数据。
表中某个(组)的值重复性较大。
(3)数据分布设计
不同类型数据的物理分布
将应用数据(基本表)、索引、日志、数据库备份数据等合理安排在不同介质中。
应用数据的划分与分布
根据数据的使用特征划分(频繁使用分区和非频繁使用分区)
根据时间、地点划分(时间或地点相同的属于同一分区)
分布式数据库系统(DDBS)中的数据划分(水平划分或垂直划分)
派生属性数据分布(增加派生列或不定义派生属性)
关系模式的去规范化(降低规范化提高查询效率)
水平划分
将基本表划分为多张具有相同属性、结构完全相同的子表,子表包含的元组是基本表中元组的子集。
例如,对商品按照商品的生产年份进行划分就属于水平划分。
垂直划分
将基本表划分为多张子表,每张子表包含的属性是原基本表的子集。
例如,商品表(商品编号、品名、单价、库存量、销售单价、备注)
可垂直划分为两张子表:
商品表(商品编号、品名、销售单价)
商品表(商品编号、单价、库存量、备注)
(5)物理模式评估
对数据库物理设计结果从存取时间、存储空间、维护代价等方面进行评估,重点是时间和空间效率。
如果评价结果满足原设计要求则可进入到物理实施阶段,否则,就需要重新设计或修改物理结构,有时甚至要返回逻辑设计阶段修改数据模型。