分区表和分区视图是什么概念,一般是在什么情况下使用,有啥好处?

如题所述

表 1:SQL Server 2005 分区表与分区视图

功能 分区表 分区视图
表的维护

表作为单个实体来管理。

每个参与的表各自都是一个实体,必须对其进行元数据更改。

索引

每个分区必须具有相同的索引。

每个表可以具有各自的索引策略。

实现

两者在实现的复杂程度方面大致相同。发生问题时,分区表会更明确地引发错误。

可能会存在隐蔽的问题使分区视图无法按预期进行操作。一个常见问题是创建检查约束而没有检查当前值。分区视图能够成功实现,但由于不明原因而不能正确进行优化。

编译时间

由于所有分区的索引方式都一样,因此优化器可以对每个分区使用相同的执行计划,从而使编译时间大大缩短。

由于分区可以具有不同的索引,因此优化器必须针对每个表(分区)来估计最佳执行计划。当分区视图中存在很多表时,编译时间将会很长。

加载

可以从外部加载分区,从而将对表当前用户的影响降至最低。

可以从外部加载表,从而将对视图当前用户的影响降至最低。

切换入新数据

是一种快捷的元数据操作,将自然进行排队。

是一种元数据操作,但是 ALTER VIEW 语句会无限期地等待 SCHEMA 锁。

可更新性

除了创建分区表所需的规则以外,不必遵守其他特殊规则来使该表可更新。分区表可以具有标识列,不需要主键等。

存在一些使得分区视图难以具备可更新性的限制,例如参与的表没有标识列并且存在主键。这通常意味着必须直接更新基础表,这样就使得 INSERT 和 UPDATE 的编码复杂化。

备份/还原

可以单独或一起备份/还原表的分区,具体取决于文件组的实现方案。

注: 除非文件组被标记为只读,否则还原文件组需要从备份点开始重新应用事务日志。

可以单独或一起备份/还原构成分区视图的各个表,具体取决于文件组的实现方案。

分区视图表还可以驻留在单独的数据库中,这样就可以对单独的分区进行单独的数据库备份。

注:除非文件组被标记为只读,否则还原文件组需要从备份点开始重新应用事务日志。

数据库内容

一个分区表中的所有分区必须驻留在同一个数据库中。

参与分区视图的各个表可以驻留在不同的数据库中。这就使得对历史记录段的备份和还原操作非常容易实现。

查询并行处理

在并行查询计划中,各个分区是并行处理的单元。如果查询仅涉及单个分区,将不通过并行处理访问该表。

将单独考察分区视图中的每个表,以确定是否进行并行查询访问。如果查询仅涉及单个表,则可以通过并行处理访问该表。

批量加载

分区表可以直接作为批量插入/备份操作的目标。

分区视图不能作为批量插入/备份操作的目标 – 目标必须是视图中的各个表。
温馨提示:答案为网友推荐,仅供参考