设计人员必须深入了解给定的DBMS的功能,DBMS提供的环境和工具、硬件环境,特别是存储设备的特征。另一方面也要了解应用环境的具体要求,如各种应用的数据量、处理频率和响应时间等。只有“ 知己知彼”才能设计出较好的物理结构。
1.存储记录结构的设计
在物理结构中,数据的基本存取单位是存储记录。有了逻辑记录结构以后,就可以设计存储记录结构,一个存储记录可以和一个或多个逻辑记录相对应。存储记录结构包括记录的组成、数据项的类型和长度,以及逻辑记录到存储记录的映射。某一类型的所有存储记录的集合称为“ 文件”,文件的存储记录可以是定长的,也可以是变长的。
文件组织或文件结构是组成文件的存储记录的表示法。文件结构应该表示文件格式、逻辑次序、物理次序、访问路径、物理设备的分配。 物理数据库就是指数据库中实际存储记录的格式、逻辑次序和物理次序、访问路径、物理设备的分配。
决定存储结构的主要因素包括存取时间、存储空间和维护代价三个方面。设计时应当根据实际情况对这三个方面进行综合权衡。一般DBMS也提供一定的灵活性可供选择,包括聚簇和索引。
(1) 聚簇(Cluster)
聚簇就是为了提高查询速度,把在一个(或一组)属性上具有相同值的元组集中地存放在一个物理块中。如果存放不下,可以存放在相邻的物理块中。其中,这个(或这组)属性称为 聚簇码。
为什么要使用聚簇呢?聚簇有两个作用:
①使用聚簇以后,聚簇码相同的元组集中在一起了,因而聚簇值不必在每个元组中重复存储,只要在一组中存储一次即可,因此可以节省存储空间。
②聚簇功能可以大大提高按聚簇码进行查询的效率。例如,假设要查询学生关系中计算机系的学生名单,设计算机系有300名学生。在极端情况下,这些学生的记录会分布在300个不同的物理块中,这时如果要查询计算机系的学生,就需要做300次的I/O操作,这将影响系统查询的性能。如果按照系别建立聚簇,使同一个系的学生记录集中存放,则每做一次I/O操作,就可以获得多个满足查询条件和记录,从而显著地减少了访问磁盘的次数。
(2) 索引
存储记录是属性值的集合,主关系键可以惟一确定一个记录,而其他属性的一个具体值不能惟一确定是哪个记录。在主关系键上应该建立惟一索引,这样不但可以提高查询速度,还能避免关系键重复值的录入,确保了数据的完整性。
在数据库中,用户访问的最小单位是属性。如果对某些非主属性的检索很频繁,可以考虑建立这些属性的索引文件。索引文件对存储记录重新进行内部链接,从逻辑上改变了记录的存储位置,从而改变了访问数据的入口点。关系中数据越多索引的优越性也就越明显。
建立多个索引文件可以缩短存取时间,但是增加了索引文件所占用的存储空间以及维护的开销。因此,应该根据实际需要综合考虑。
2.访问方法的设计
访问方法是为存储在物理设备(通常指辅存)上的数据提供存储和检索能力的方法。一个访问方法包括存储结构和检索机构两个部分。存储结构限定了可能访问的路径和存储记录;检索机构定义了每个应用的访问路径,但不涉及存储结构的设计和设备分配。
存储记录是属性的集合,属性是数据项类型,可用作主键或辅助键。主键惟一地确定了一个记录。辅助键是用作记录索引的属性,可能并不惟一确定某一个记录。
访问路径的设计分成主访问路径与辅访问路径的设计。主访问路径与初始记录的装入有关,通常是用主键来检索的。首先利用这种方法设计各个文件,使其能最有效地处理主要的应用。一个物理数据库很可能有几套主访问路径。辅访问路径是通过辅助键的索引对存储记录重新进行内部链接,从而改变访问数据的入口点。用辅助索引可以缩短访问时间,但增加了辅存空间和索引维护的开销。设计者应根据具体情况作出权衡。
3.数据存放位置的设计
为了提高系统性能,应该根据应用情况将数据的易变部分、稳定部分、经常存取部分和存取频率较低部分分开存放。
例如,目前许多计算机都有多个磁盘,因此可以将表和索引分别存放在不同的磁盘上,在查询时,由于两个磁盘驱动器并行工作,可以提高物理读写的速度。
在多用户环境下,可能将日志文件和数据库对象(表、索引等)放在不同的磁盘上,以加快存取速度。另外,数据库的数据备份、日志文件备份等,只在数据库发生故障进行恢复时才使用,而且数据量很大,可以存放在磁带上,以改进整个系统的性能。
4.系统配置的设计
DBMS产品一般都提供了一些系统配置变量、存储分配参数,供设计人员和DBA对数据库进行物理优化。系统为这些变量设定了初始值,但是这些值不一定适合每一种应用环境,在物理设计阶段,要根据实际情况重新对这些变量赋值,以满足新的要求。
系统配置变量和参数很多,例如,同时使用数据库的用户数、同时打开的数据库对象数、内存分配参数、缓冲区分配参数(使用的缓冲区长度、个数)、存储分配参数、数据库的大小、时间片的大小、锁的数目等,这些参数值影响存取时间和存储空间的分配,在物理设计时要根据应用环境确定这些参数值,以使系统的性能达到最优。

