服务器 频道

使用水平分区来提高性能

  【IT168 服务器学院】水平分区(Horizontal partitioning)是为一个数据库表而建立至少两个物理文件的过程。数据库表越大,水平分区需要扫描的时间越长。因此,使用水平分区的主要目的是将很少使用的数据转移到另一个文件中。
   
  实现水平分区的通常方式是为每一个分区分配日期范围。例如,假设在给定的应用程序中,利息的日期通常为从当前的年月开始。(其它日期偶尔也会被检索,所以这些日期必须是合法的,但它也不一定在主要物理文件中)。你可以建立两个水平分区──当前数据库和归档数据库,或者你可以建立每一个年度日期的分区,这取决于你的需求。
  
  有关建立一个水平分区的在线信息已经相当完整,所以我现在只是提到几个步骤:
  
  ·建立附带一个Publisher (当前数据库)和一个Subscriber (归档数据库)的发布。
  
  ·为了你想要水平分区的每一个条款,选择为水平DTS转换分区提供支持(Provide Support For Horizontal DTS Transformation Partitions)。
  
  ·使用转换数据向导(Transform Data Wizard)建立DTS包。对于即将被分区的每一个表,编写一个ActiveX脚本以指定分区。通常,你必须决定是否在Publisher中更新或者改变行以转移到Subscriber。
  
  在线的书籍也提供了一个很好的为分区条款而编写的ActiveX脚本。你可以在使用过程中复制和粘贴这一例子,而只需要一些很少的改动,就可以满足自己的需要。(在在线书籍中以“Defining a Horizontal Partition”搜索。)
  
  水平分区如何帮助我?
  最近,我检查了我开发过的一个数据库,以查看如何受益于水平分区。在三个特定利息表中,每个表中都有一个DateEntered列,其默认值为GetDate()。我进行了两个分区,将去年作为Current,而将去年之前作为Archive。
  
  去年的销售量已经下滑,利息值只是全部值的十分之一。业绩不是非常好,但也是可以的。另一个方面,多年查询速度很明显感觉到减慢,但这一操作也很少执行,因为这少有这种情况发生。通过使用到水平分区,我从中获得了利润。我的程序都是基于日期的操作。
  
  你的情况可能有些不同,但我建议你去研究并使用它。
0
相关文章