数据库:数据库的物理设计

数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于给定的计算机系统。为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,称为数据库的物理设计。物理设计的目的是有效地实现逻辑模式,确定所采取的存储策略。此阶段是以逻辑设计的结构作为输入,并结合具体DBMS的特点与存储设备特性进行设计,选定数据库在物理设备上存储结构和存取方法。数据库的物理设计可分为两步:

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

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

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

关系模式存取方法选择

数据库系统是多用户共享的系统,对同一个关系要建立多条存取路径才能满足多用户的多种应用要求。物理设计的任务之一就是要确定选择哪些存取方法,即建立哪些存取路径。存取方法是快速存取数据库中数据的技术。数据库管理系统一般都提供多种存取方法,常用的存取方法有3类:索引方法、聚簇(Cluster)方法和HASH方法。

索引存取方法的选择

在关系数据库中,索引是一个单独的、物理的数据结构,它是某个表中一列或若干列的集合和相应指向表中物理标识这些值的数据页的逻辑指针清单。索引可以提高数据的访问速度,可以确保数据的唯一性。索引存取方法就是根据应用要求确定对关系的哪些属性列建立索引、哪些属性列建立组合索引、哪些索引要设计为唯一索引等。

  • 如果一个(或一组)属性经常在查询条件中出现,则考虑在这个(或这组)属性上建立索引(或组合索引)。

  • 如果一个属性经常作为最大值或最小值等聚集函数的参数,则考虑在这个属性上建立索引。

  • 如果一个(或一组)属性经常在连接操作的连接条件中出现,则考虑在这个(或这组)属性上建立索引。

关系上定义的索引数并不是越多越好,因为系统为维护索引要付出代价,并且查找索引也要付出代价。例如,若一个关系的更新频率很高,这个关系上定义的索引就不能太多。因为更新一个关系时,必须对这个关系上有关的索引做相应的修改。

聚簇存取方法的选择

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

设计聚簇的规则

凡符合下列条件之一,均可以考虑建立聚簇:

  • 对经常在一起进行连接操作的关系可以建立聚簇。

  • 如果一个关系的一组属性经常出现在相等比较条件中,则该关系可建立聚簇。

  • 如果一个关系的一个或一组属性上的值的重复率很高,即对应每个聚簇码值的平均元组数不是太少,则可以建立聚簇。如果元组数太少,则聚簇的效果不明显。

凡存在下列条件之一,均应考虑不建立聚簇:

  • 需要经常对全表进行扫描的关系。

  • 在某属性列上的更新操作远多于查询和连接操作的关系。

使用聚簇需要注意的问题

  • 一个关系最多只能加入一个聚簇。

  • 聚簇对于某些特定应用可以明显地提高性能,但建立聚簇和维护聚簇的开销很大。

  • 在一个关系上建立聚簇,将移动关系中的元组的物理存储位置,并使此关系上的原有索引无效,必须重建。

  • 因为当一个元组的聚簇码值改变时,该元组的存储也要做相应的移动,所以聚簇码值要相对稳定,以减少修改聚簇码值所引起的维护开销。

因此,通过聚簇码进行访问或连接是关系的主要应用,与聚簇码无关的其他访问很少或者是次要时,可以使用聚簇。当SQL语句中包含有与聚簇码有关的ORDER_BY、GROUP_BY、UNION、DISTINCT等子句或短语时,使用聚簇特别有利,可以省去对结果集的排序操作;否则很可能会适得其反。

HASH存取方法的选择

有些数据库管理系统提供了HASH存取方法。选择HASH存取方法的规则如下:

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

    • 一个关系的大小可预知,并且不变。

    • 关系的大小动态改变,并且所选用的DBMS提供了动态HASH存取方法。

确定数据库的存储结构

确定数据库的物理结构主要是指确定数据的存放位置和存储结构,包括确定关系、索引、聚簇、日志、备份等的存储安排和存储结构;确定系统配置等。

为了提高系统性能,应该根据实际应用将数据库中数据的易变部分与稳定部分、常存取部分、存取频率较低部分分开存放。有多个磁盘的计算机可以采用下面几种存取位置的分配方案。

  • 将表和该表的索引放在不同的磁盘中。在查询时,两个磁盘驱动器并行操作,提高了物理I/O读/写的效率。

  • 将比较大的表分别放在两个磁盘上,以加快存取速度,这在多用户环境下特点有效。

  • 将日志文件与数据库的对象放在不同的磁盘上,以改进系统的性能。

  • 对于经常存取或存取时间要求高的对象应放在高速存储器上;对于存取频率小或存取时间要求低的对象(如数据库的数据备份和日志文件备份等,只在故障恢复时才使用),如果数据量很大,则可以存放在低速存储设备上。

DBMS产品一般都提供了一些系统配置变量、存储分配参数,以供设计人员和DBS对数据库进行物理优化。在初始情况下,系统都为这些变量赋予了合理的默认值。这些初始值并不一定适合每种应用环境,在进行物理设计时,需要重新对这些变量赋值,以改善系统的性能。系统配置变量很多,例如,同时使用数据库的用户数、同时打开数据库的对象数、内存分配参数、缓冲区分配参数(使用的缓冲区长度、个数)、存储分配参数、物理块的大小、物理块装填因子、时间片大小、数据库的大小、锁的数目等。这些参数值会影响存取时间和存储空间的分配,因此在进行物理设计时,要根据应用环境确定这些参数值,以使系统性能最佳。

(最近更新:2019年09月03日)

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据库物理设计(1)全文共2页,当前为第1页。数据库物理设计(1)全文共2页,当前为第1页。物理结构设计 数据库物理设计(1)全文共2页,当前为第1页。 数据库物理设计(1)全文共2页,当前为第1页。 数据库物理设计阶段的任务是根据具体计算机系统(DBMS和硬件等)的特点,为给定的数据库模型确定合理的存储结构和存取方法。所谓的"合理"主要有两个含义:一个是要使设计出的物理数据库占用较少的存储空间,另一个对数据库的操作具有尽可能高的速度。 为了设计数据库物理结构,设计人员必须充分了解所用DBMS的内部特征;充分了解数据系统的实际应用环境,特别是数据应用处理的频率和响应时间的要求;充分了解外存储设备的特性。数据库物理结构设计大致包括:确定数据的存取方法、确定数据的存储结构。 物理结构设计阶段实现的是数据库系统的内模式,它的质量直接决定了整个系统的性能。因此在确定数据库的存储结构和存取方法之前,对数据库系统所支持的事务要进行仔细分析,获得优化数据库物理设计的参数。 对于数据库查询事务,需要得到如下信息: l 要查询的关系。 l 查询条件(即选择条件)所涉及的属性。 l 连接条件所涉及的属性。 l 查询的投影属性。 对于数据更新事务,需要得到如下信息: l 要更新的关系。 l 每个关系上的更新操作的类型。 l 删除和修改操作所涉及的属性。 l 修改操作要更改的属性值。 上述这些信息是确定关系存取方法的依据。除此之外,还需要知道每个事务在各关系上运行的频率,某些事务可能具有严格的性能要求。例如,某个事务必须在20秒内结束。这种时间约束对于存取方法的选择有重大的影响。需要了解每个事务的时间约束。 值得注意的是,在进行数据库物理结构设计时,通常并不知道所有的事务,上述信息可能不完全。所以,以后可能需要修改根据上述信息设计物理结构,以适应新事务的要求。 1. 确定关系模型的存取方法 确定数据库的存取方法,就是确定建立哪些存储路径以实现快速存取数据库中的数据。现行的DBMS一般都提供了多种存取方法,如索引法、HASH法等。其中,最常用的是索引法。 数据库物理设计(1)全文共2页,当前为第2页。数据库物理设计(1)全文共2页,当前为第2页。数据库的索引类似书的目录。在书中,目录允许用户不必浏览全书就能迅速地找到所需要的位置。在数据库中,索引也允许应用程序迅速找到表中的数据,而不必扫描整个数据库。在书中,目录就是内容和相应页号的清单。在数据库中,索引就是表中数据和相应存储位置的列表。使用索引可以大大减少数据的查询时间。 数据库物理设计(1)全文共2页,当前为第2页。 数据库物理设计(1)全文共2页,当前为第2页。 但需要注意的是索引虽然能加速查询的速度,但是为数据库中的每张表都设置大量的索引并不是一个明智的做法。这是因为增加索引也有其不利的一面:首先,每个索引都将占用一定的存储空间,如果建立聚簇索引(会改变数据物理存储位置的一种索引),占用需要的空间就会更大;其次,当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的更新速度。 在创建索引的时候,一般遵循以下的一些经验性原则: l 在经常需要搜索的列上建立索引。 l 在主关键字上建立索引。 l 在经常用于连接的列上建立索引,即在外键上建立索引。 l 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。 l 在经常需要排序的列上建立索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询的时间。 l 在经常成为查询条件的列上建立索引。也就是说,在经常使用在WHERE子句中的列上面建立索引。 同样,对于某些列不应该创建索引。这时候应该考虑下面的指导原则: l 对于那些在查询中很少使用和参考的列不应该创建索引。因为既然这些列很少使用到,有索引并不能提高查询的速度。相反,由于增加了索引,反而降低了系统的维护速度和增大了空间需求。 l 对于那些只有很少值的列不应该建立索引。例如,人事表中的"性别"列,取值范围只有两项:"男"或"女"。若在其上建立索引,则平均起来,每个属性值对应一半的元组,用索引检索,并不能明显加快检索的速度。 时刻怀有一颗虔诚之心,乐于分享。知识才更有意义。 数据库物理设计(1)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值