为一个给定的逻辑数据模型选定一个最合适应用要求的物理结构的过程,就是数据库的物理设计。

1. 物理设计步骤

数据库的物理设计通常分为两步:

(1) 确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构。

(2) 对物理结构进行评价,评价的重点是时间和空间效率。

如果评价结果满足原设计要求,则可进入到物理实施阶段,否则,就需要重新设计或修改物理结构,有时甚至还要返回逻辑设计阶段修改数据模型。

2. 数据库物理设计的内容和方法

希望设计优化的物理数据库结构,使得在数据库上运行的各种事务相应时间小,存储空间利用率高,事务吞吐率大,因此需要:

(1) 首先要对运行的事务进行详细分析,获得选择物理数据库设计所需要的参数。

(2)要充分了解所用关系数据库管理系统的内部特征,特别是系统提供的存取方法和存储结构。

3. 关系模式存取方法选择

  • B+树索引存取方法的选择

选择索引存取方法就是根据应用要求确定对关系的那些属性列建立索引,哪些属性列建立组合索引,哪些索引要设计唯一索引等。

  1. 如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)。
  2. 如果一个属性经常作为最大值和最小值等聚集函数的参数,则考虑在这个属性上建立索引。
  3. 如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引。

关系上定义的索引数并不是越多越好,系统为维护索引要付出代价,查找索引也要付出代价。

  • hash索引存取方法的选择

选择hash存取方法的规则:如果一个关系的属性主要出现在等值连接条件中或主要出现在等值比较选择条件中,而且满足下列两个条件之一,则此关系可以选择hash存取方法。

  1. 一个关系的大小可预知,而且不变。
  2. 关系的大小动态改变,但数据库管理系统提供了动态hash存取方法。
  • 聚簇存取方法的选择

为了提高某个属性(或属性组)的查询速度,把这个或这些属性(称为聚簇码)上具有相同值的元组集中存放在连续的物理块中称为聚簇。

聚簇功能可以大大提高按聚簇码进行查询的效率,聚簇功能不单适用于单个关系,也适用于经常进行连接操作的多个关系。一个数据库可以连接多个聚簇,一个关系只能加入一个聚簇。

(1) 设计候选聚簇的条件

  1. 对经常在一起进行连接操作的关系可以建立聚簇。
  2. 如果一个关系的一组属性经常出现在相等比较条件中,则该单个关系可建立聚簇。
  3. 如果一个关系的一个(或一组)属性上的值重复率很高,则此单个关系可建立聚簇。即对应每个聚簇码值的平均元组数不能太少。

(2) 检查候选聚簇

  1. 从聚簇中删除经常进行全表扫描的关系。
  2. 从聚簇中删除更新操作远多于连接操作的关系。
  3. 不同的聚簇中可能包含相同的关系,一个关系可以在某一个聚簇中,但不能同时加入多个聚簇。要从这多个聚簇方案(包括不建立聚簇)中选择一个较优的,即在这个聚簇上运行各种事务的总代价最小。

4. 确定数据库的存储结构

确定数据库物理结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构,确定系统配置等。
确定数据的存放位置和存储结构要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。这三个方面常常是相互矛盾的,因此需要进行权衡选择一个折中方案。

  • 确定数据的存放位置

为了提高系统性能,应根据应用情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。

  • 确定系统配置

关系数据库管理系统产品一般都提供了一些系统配置变量和存储分配参数,供设计人员和数据库管理员对数据库进行物理优化。初始情况下,系统都为这些变量赋予了合理的默认值。但是这些值不一定适合每一种应用环境,在进行物理设计时需要重新对些变量赋值,以修改系统的性能。

5. 评价物理结构

评价物理数据库的方法完全依赖于所选用的关系数据库管理系统,主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的、合理的物理结构。如果该结构不符合用户需求,则需要修改设计。