表 1:SQL Server 2005 分区表与分区视图
功能 分区表 分区视图
表的维护
表作为单个实体来管理。
每个参与的表各自都是一个实体,必须对其进行元数据更改。
索引
每个分区必须具有相同的索引。
每个表可以具有各自的索引策略。
实现
两者在实现的复杂程度方面大致相同。发生问题时,分区表会更明确地引发错误。
可能会存在隐蔽的问题使分区视图无法按预期进行操作。一个常见问题是创建检查约束而没有检查当前值。分区视图能够成功实现,但由于不明原因而不能正确进行优化。
编译时间
由于所有分区的索引方式都一样,因此优化器可以对每个分区使用相同的执行计划,从而使编译时间大大缩短。
由于分区可以具有不同的索引,因此优化器必须针对每个表(分区)来估计最佳执行计划。当分区视图中存在很多表时,编译时间将会很长。
加载
可以从外部加载分区,从而将对表当前用户的影响降至最低。
可以从外部加载表,从而将对视图当前用户的影响降至最低。
切换入新数据
是一种快捷的元数据操作,将自然进行排队。
是一种元数据操作,但是 ALTER VIEW 语句会无限期地等待 SCHEMA 锁。
可更新性
除了创建分区表所需的规则以外,不必遵守其他特殊规则来使该表可更新。分区表可以具有标识列,不需要主键等。
存在一些使得分区视图难以具备可更新性的限制,例如参与的表没有标识列并且存在主键。这通常意味着必须直接更新基础表,这样就使得 INSERT 和 UPDATE 的编码复杂化。
备份/还原
可以单独或一起备份/还原表的分区,具体取决于文件组的实现方案。
注: 除非文件组被标记为只读,否则还原文件组需要从备份点开始重新应用事务日志。
可以单独或一起备份/还原构成分区视图的各个表,具体取决于文件组的实现方案。
分区视图表还可以驻留在单独的数据库中,这样就可以对单独的分区进行单独的数据库备份。
注:除非文件组被标记为只读,否则还原文件组需要从备份点开始重新应用事务日志。
数据库内容
一个分区表中的所有分区必须驻留在同一个数据库中。
参与分区视图的各个表可以驻留在不同的数据库中。这就使得对历史记录段的备份和还原操作非常容易实现。
查询并行处理
在并行查询计划中,各个分区是并行处理的单元。如果查询仅涉及单个分区,将不通过并行处理访问该表。
将单独考察分区视图中的每个表,以确定是否进行并行查询访问。如果查询仅涉及单个表,则可以通过并行处理访问该表。
批量加载
分区表可以直接作为批量插入/备份操作的目标。
分区视图不能作为批量插入/备份操作的目标 – 目标必须是视图中的各个表。
温馨提示:答案为网友推荐,仅供参考