CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

数据库 | Oracle | DB2 | SQL Server | MySQL | 商业智能 | BI | DBA | Sybase| SQL Server 2008

您现在的位置: IT专家网 > 数据库子站 > 数据库技巧

数据仓库:事实表的水平分区

作者: cyw,  出处:IT专家网, 责任编辑: 李书琴, 
2008-04-11 08:50
  分区是管理大型数据库表的有效手段。表的水平分区是对表的行进行分区,分区后表的行会被划分为若干不重叠的小单元。通过FOR VALUES语句可以为这些分区单元指定边界范围值。要将事实表进行水平分区,我们首先需要创建一个分区函数和一个分区方案,然后再创建分区表。

  【IT专家网独家】对于大型数据库来说,其事实表的数据记录数量往往会在很短的时间内迅猛地增长。有时候,难以对这样的庞大的数据集进行有效的管理,甚至SQL查询的性能和速度都会受到不利的影响。数据库分区技术就应运而生了。对事实表进行水平分区,有利于改善大型数据库的查询和读写性能,并简化数据库管理。

  表的水平分区是将表的行划分为多个不重叠的单元。水平分区表中的每一个分区单元都是通过对某个属性列的值进行边界范围界定的,例如日期、地理区划、客户名等等。(注:你可以考虑将每个分区单元存储在不同的硬盘,以提高查询性能)。虽然对于数据库管理员和数据库开发人员来说,对表进行水平分区并不是什么难事,不过在实际操作之前还是需要进行一定的规划,因为你正在处理的可是超大量的数据。下面,我们会和大家探讨一下什么时候应当对一个事实表进行水平分区,而进行水平分区的原因又是什么。此外,我们还会介绍如何使用SQL Server 2005的内置功能创建分区函数、分区方案和分区表。

  为什么要对事实表进行水平分区?

  大型表格(例如,具有亿万行的表)的管理难度很大,主要是因为表的规模太大,无论你对其进行任何操作都要花费大量的时间(例如,重新生成索引操作)。在一个事务数据库中,关联表(例如,涉及多对多关系的表)通常是拥有最多行数的表。在维度建模过程中,一个事实表相当于一个关联表。就像事务数据库中的关联表一样,事实表往往拥有比其相关维度更多的行。

  分区可以将这些超大型的表分割成便于管理的小单元。如果你用于维护数据库的时间在紧缩,而需要处理的数据量却在不断的增长,你就可以先对表进行分区,再按照分区来执行备份和恢复操作以及更新表统计信息等维护任务,而不是对整个表进行这些操作。SQL Server 2005将一个分区表的所有分区看作一个逻辑实体,而且在终端用户面前,这些分区仍然以一个整体表的形式出现。

  对表进行水平分区有以下原因:

  · 可以更好地控制将每个分区放在存储器的哪些位置,并利用多读写头来实现快速查询。

  · 可以按分区来进行备份和恢复操作,索引的重新生成和重新组织也可以按照分区来执行,而且可以对索引本身进行分区。

  · 可以直接通过一个包含分区列或索引列的WHERE语句进行查询。

  · 由于将锁限制在分区,你可以减少锁升级和锁管理的开销。

  · 如果多个分区在同一个文件组,那么合并和分割分区就非常容易。

  接下来的问题是什么表适合进行水平分区呢?适合进行水平分区的表包括包含数据量非常大的表、预计在近期内会数据量将会猛增的表、以及能够根据某种业务属性值(例如,财政年度)来直观分割的表。这些表都必须包含一个能用来将行分割成独立不重叠单元的非空属性列,例如由销售时间构成的列。

  如果你的数据库包含了一个大型表格,对这个表格进行查询和更新操作时,执行的性能都没能达到你的预期要求,那么你就可以考虑对表进行分区以提高查询性能。SQL Server 2005能够识别分区,也就是说,如果包含了涉及分区列或索引列(该索引也是分区索引)的WHERE语句的查询运行很慢时,查询策略只会访问相关的分区,这样查询可以在小范围记录里进行。该功能可以显著提高查询性能。

  创建分区函数

  要对表进行分区,首先需要创建由一个指定的分区列和一系列范围边界值构成的分区函数。执行下面的例子中的指令为SALESFact表创建了分区函数:

  CREATE PARTITION FUNCTION MyDateRangePF (datetime)

  AS RANGE LEFT FOR VALUES (‘1/01/2003’, ‘1/01/2005’, ‘1/01/2007)

共3页。 1 2 3 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅


    
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2007, ChinaByte
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i