下面的文章主要介绍的是在SQL Server 2000 数据仓库中使用分区之分区的优点,SQL Server 2000 数据仓库中使用分区在实际操作中是经常出现的,如果你对其相关知识有兴趣了解的话,你就可以浏览以下的文章了。
分区视图主要是联接来自一组成员的水平分区的相关数据,使数据看起来象来自同一张表。SQL Server 2000 区分本地分区视图和分布式分区视图。
在本地分区视图中,所有相关表和视图驻留在 SQL Server 的同一实例上。在分布式分区视图中,相关表中至少有一张表驻留在其他某个(远程)服务器上。建议您不要将分布式分区视图用于数据仓库应用程序。
矢量SQL Server 2000 数据仓库围绕事实(标量)和矢量构建,从物理上通常表示为星形架构和雪花形架构,极少有同时包含事实和矢量的完全非正交化的平面表。由于矢量架构是最常见的关系型数据仓库结构,本文集中讨论这类架构的分区。下面的建议也适用于其他通用数据仓库架构。
分区的优点 :
数据修剪:
许多数据仓库管理员会定期将陈旧的数据归档。例如,一个单击流SQL Server 2000 数据仓库可能只将详细数据联机保留三至四个月。其他常见的规则可能是联机保留 13 个月、37 个月或 10 年,当旧数据不在活动窗口中时就归档并从数据库中删除。这种滚动窗口结构是大数据仓库通常采取的做法。
在没有分区表的情况下,从数据库中删除旧数据的进程需要一个很大的 DELETE 语句,例如:
DELETE FROM fact_table WHERE date_key < 19990101
执行该语句开销会非常大,可能比同一张表的加载进程需要更多的时间。相反,对于分区表,管理员重新定义 UNION ALL 视图以排除最旧的表,然后将该表从数据库中删除(假设已确保备份该表),这个过程几乎可以在瞬间完成。
后面我们会讨论到,维护分区表的费用也很高。如果数据修剪是采用分区的唯一原因,设计者应考虑以数据分解的方式从未分区的表中删除旧数据。在低优先级进程上连续运行一个每次删除 1000 行(用“set rowcount 1000”命令)的脚本,直至删除所有希望删除的数据。该技术可在大系统上有效运用,比创建必要的分区管理系统更为直接。根据加载量和系统使用状况,该技术适合于某些系统,并应该考虑在系统上进行基准测试。
加载速度:
加载数据最快的方法是将数据加载至空表或没有索引的表。通过加载至较小的分区表,渐变加载进程的效率将大大提高。
可维护性:
一旦已建成支持分区的SQL Server 2000 数据仓库分阶段应用程序,整个系统将变得容易维护。维护活动(包括加载数据、备份和还原表)可以并行地执行,这样可以极大地改善性能。渐变填充下行数据流多维数据集的进程可以被加速和简化。
查询速度:
查询速度不应该作为对数据仓库关系型数据库进行分区的理由。对于分区和未分区的事实表,查询性能都差不多。在正确设计的分区数据库中,关系引擎仅在查询计划中包括解析查询所需的相关分区。例如,如果数据库按月分区,查询条件为 2000 年 1 月,则查询计划仅包括 2000 年 1 月的分区。结果查询将对分区表正确执行,与在分区键上带有簇索引的已索引合并表上执行的大体相同。
【编辑推荐】
- 配置Tomcat+SQL Server2000连接池流程
- 正确分析MS SQL Server函数的2种用法
- SQL Server Model增加一些变化,很简单!
- 易混淆的SQL Server数据类型列举
- SQL Server 2000的安全配置流程与基础