在Microsoft SQL Server 2000数据仓库中使用分区
2007-10-23 15:23:54 来源:WEB开发网数据完整性
确保将数据处理进一个并且仅一个分区是多维数据集设计和分区管理系统的任务。分析服务不检查是否所有的行均来自在多维数据集中进行实例化的一个事实表,也不验证某一行是否仅加载到一个分区中。如果不经意地将一个事实行加载到两个分区,分析服务会把它们看作不同的事实。所有的聚合将重复计入该数据,查询将返回不正确的结果。
处理分区
处理分区与处理多维数据集基本相同。对于处理任务,自然的工作单位就是一个分区。分析管理器处理向导为处理多维数据集或分区提供了以下三种模式:
渐变处理需要管理员在源查询上定义筛选条件,以识别多维数据集的新数据集。通常该筛选基于日期(存储在事实表中的事件日期或处理日期)。
DTS 多维数据集处理任务提供了完全相同的功能。大多数系统使用 DTS 多维数据集处理任务来定时安排多维数据集处理。经过渐变处理的多维数据集使用动态属性任务来更改源筛选。尽管渐变更新比刷新数据需要的代码要多一些,DSO 中的自定义代码也提供了相同的功能。
设计分区管理系统时,请特别注意正在处理的渐变多维数据集或正在处理的分区要求过去已经处理过的分区。请勿在未被处理的多维数据集或分区上使用渐变处理。
仅按日期分区的多维数据集有直接加载管理的要求。典型情况下,每个加载循环有一个要更新的单个分区;唯一的决策点为是要渐变更新还是要刷新数据。大多数日期矢量多维数据集可从一个简单的 DTS 程序包中管理。
按多个矢量分区的多维数据集具有以下额外的挑战和好处:
大多数在多个矢量上分区的应用程序将多维数据集处理系统设计为可以并行地加载分区。并行加载系统能够启动多个同时运行的 DTS 程序包,它们的参数已经用动态属性任务更新过。尽管可行,但这种结构不便于使用,相反许多系统会选择使用本机 DSO 代码来更新分区。可以获得并行处理分区的示例工具。
合并分区
对于沿日期分区的多维数据集,它的分区的数量会随时间流逝而增长。如前面所述,分区数量增加到一定程度后,理论上存在着一个查询性能开始降低的点。我们测试了包括 500 个以上分区的开发项目,但还没有达到过这个极限。由于过多分区的其他缺点,例如源数据操作缓慢等,将给管理数据库带来更多的困难,系统管理员在达到该极限之前往往就已不能忍受它了。
通过 DSO 和分析管理器,分析服务支持合并分区的功能。合并两个分区时,一个分区的数据将合并到另一个分区中。两个分区必须具有相同的存储模式和聚合计划。合并完成后,第一个分区被丢弃,第二个分区则包含合并的数据。合并处理仅发生在多维数据集数据上;合并过程中不访问数据源。两个分区的合并过程的效率很高。
如果系统设计包括合并的分区,合并过程应该通过编程进行,而不是通过分析管理器。合并分区很简单,和其他 DSO 操作一样只需要几行代码。分区合并系统必须负责验证最终合并的分区包含用于源筛选的精确元数据信息,以确保必要时可以重新处理分区。分区合并过程正确地更改分区片定义,也尽可能合并筛选定义。但合并过程不要求从相同的表或数据源填充两个分区,合并两个不能被重新填充的分区是可能的。
第二个要考虑的问题是:与所有分区一样,已合并的分区不能被重新命名。
通过使用以下良好的系统设计方法可以避免这些问题:
例如,考虑按星期分区数据的“销售额”多维数据集。本周按日进行分区,然后在本周末合并。将分区命名为 Sales_yyyymmdd,其中名称中的日期是分区中数据的第一天。2000 年 11 月,我们将会有 Sales_20001105、Sales_20001112、Sales_20001119 和 Sales_20001126 周分区。下周里,我们通过 Sales_20001209 创建和处理 Sales_20001203、Sales_20001204 等。在星期天的处理窗口期间(那时系统使用率很低),我们可以把从 20001204 到 20001209 合并至 Sales_20001203,仅留下周分区。或者,您可以通过新建一个有您想要的名称的空分区,将其他分区合并进去,从而有效地重新命名一个分区。
丢弃旧的分区
删除按日分区的多维数据集中的旧数据与丢弃最老的分区(集)一样简单。与我们讨论过的其他操作相似,这个过程应该通过编程来管理,而不是通过分析管理器个别进行。如果您理解了这一点,您会乐意花几小时编写和测试这个模块。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接