7.3.3 物理结构设计
数据库物理结构设计是为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式,设计出一个高效的、可实现的物理数据库结构。
由于不同的数据库管理系统提供的硬件环境和存储结构、存取方法不同,提供给数据库设计的系统参数以及变化范围也不同,因此,物理结构设计一般没有通用的准则,它只能提供一个技术和方法供参考。
1)物理结构设计的内容和方法
物理数据库设计得好,可以使各事务的响应时间短、存储空间利用率高、事务吞吐量大。因此,在设计数据库时要对经常用到的查询和对数据进行更新的事务进行详细的分析,获得物理结构设计所需的各种参数。同时还要充分了解所使用的DBMS的内部特征,特别是系统提供的存取方法和存储结构。
对于数据查询,需要得到如下信息:
查询所涉及的关系。
查询条件所涉及的属性。
连接条件所涉及的属性。
查询列表中涉及的属性。
对于更新数据的事务,需要得到如下信息:
更新所涉及的关系。
每个关系上的更新条件所涉及的属性。
更新操作所涉及的属性。
除此之外,还需要了解每个查询或者事务在各关系上的运行频率和性能要求。例如,假设某个查询必须在1 s之内完成,则数据的存储方式和存取方式就非常重要。
需要注意的是,在数据库上运行的操作和事务是不断变化的,因此需要根据这些操作的变化不断调整数据库的物理结构,以获得最佳的数据库性能。
通常关系数据库的物理结构设计主要包含如下内容:
(1)确定存取方法
存取方法是快速存取数据库中数据的技术,数据库管理系统一般提供多种存取方法。具体采取哪种存取方法由系统根据数据的存储方式决定,一般用户不能干预。
(2)确定数据的存储结构
物理结构设计中一个重要的考虑就是确定数据记录的存储方式。常用的存储方式如下:
顺序存储:这种存储方式的平均查找次数为表中记录的1/2。
散列存储:这种存储方式的平均查找次数由散列算法决定。
聚集存储:为了提高某个属性(或属性组)的查询速度,可以把这个或者这些属性上具有相同值的元组集中存放在连续的物理块上,这样的存储方式称为聚集存储。
一般用户可以通过建立索引的方式改变数据的存储方式。但在其他情况下,数据是采用顺序存储还是散列存储,或者其他的存储方式是由数据库管理系统根据数据的具体情况决定的,一般它都会为数据选择一种最合适的存储方式,而用户并不能对此进行干预。
2)物理结构设计的评价
物理结构设计过程中要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计者必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。
评价物理结构设计的方法完全依赖于具体的DBMS,主要考虑操作开销,即为了使用户获得及时、准确的数据所需要的开销和计算机的资源开销。具体可以分为以下几类:
①查询和响应时间。响应时间是从查询开始到查询结果开始显示之间所经历的时间。一个好的应用程序设计可以减少CPU时间和I/O时间。
②更新事务的开销。主要是修改索引、重写物理块或者文件以及写校验等方面的开销。
③生成报告的开销。主要包括索引、重组、排序和结果显示的开销。
④主存储空间的开销。包括程序和数据所占用的空间。对于数据库设计者来说,一般可以对缓冲区做适当的控制,如缓冲区的个数和大小。
⑤辅助存储空间的开销。辅助存储空间分为数据块和索引块两种。设计者可以控制索引块的大小、索引块的充满度等。
实际上,数据库设计者只能对I/O和辅助空间进行有效控制,其他方面都是有限控制或者根本就不能控制。