分区设计概述
SQL Server 数据库中的分区表可以使用可更新或可查询(不可更新)的分区视图。在这两种情况下,表分区都是由每个分区都包含正确数据的 CHECK 约束来创建的。一个可更新的分区视图支持对视图进行 INSERT (或 UPDATE 或 DELETE)操作,并将操作推入至正确的基础表。这很有益处,但数据仓库应用程序通常需要进行批量加载,而这是无法通过视图执行的。下表总结了可更新和可查询分区视图的要求、优点和缺点。
要求 优点 缺点
可更新的分区视图
CHECK 约束强制使用的分区键
主键的分区键部分
无其他数据库限制的分区键部分
在成员表上定义的 UNION ALL 视图
查询性能:查询计划仅包括解析相关查询所需的成员表。
维护应用程序的简易性:数据可以被加载至 UNION ALL 视图,然后插入合适的成员表中
加载性能:通过视图加载数据的速度太慢,以至这种方式对大多数的数据仓库应用程序来说是不实用的。
灵活性:数据库设计对分区键可能要求额外的约束。
可查询的分区视图
CHECK 约束强制使用的分区键
在成员表上定义的 UNION ALL 视图
查分区设计概述
SQL Server 数据库中的分区表可以使用可更新或可查询(不可更新)的分区视图。在这两种情况下,表分区都是由每个分区都包含正确数据的 CHECK 约束来创建的。一个可更新的分区视图支持对视图进行 INSERT (或 UPDATE 或 DELETE)操作,并将操作推入至正确的基础表。这很有益处,但数据仓库应用程序通常需要进行批量加载,而这是无法通过视图执行的。下表总结了可更新和可查询分区视图的要求、优点和缺点。
要求 优点 缺点
可更新的分区视图
CHECK 约束强制使用的分区键
主键的分区键部分
无其他数据库限制的分区键部分
在成员表上定义的 UNION ALL 视图
查询性能:查询计划仅包括解析相关查询所需的成员表。
维护应用程序的简易性:数据可以被加载至 UNION ALL 视图,然后插入合适的成员表中
加载性能:通过视图加载数据的速度太慢,以至这种方式对大多数的数据仓库应用程序来说是不实用的。
灵活性:数据库设计对分区键可能要求额外的约束。
可查询的分区视图
CHECK 约束强制使用的分区键
在成员表上定义的 UNION ALL 视图
查询性能:查询计划仅包括解析查询所必要的成员表。
加载性能:可高效地直接将数据批量加载至成员表。
存储:尽管推荐声明主键并在主键上创建索引的做法,但分区视图不要求主键索引。
视图最多可有 256 个成员表。
必须创建维护应用程序来管理分区和加载。
Microsoft 建议的做法是定义主键,并将事实表设计为本地(单个服务器上)的分区联合视图。大多数情况下,该定义会产生可更新的分区视图,但数据仓库维护应用程序应设计为直接将大多数数据批量加载至成员表(而不是通过视图进行)。
询性能:查询计划仅包括解析查询所必要的成员表。
加载性能:可高效地直接将数据批量加载至成员表。
存储:尽管推荐声明主键并在主键上创建索引的做法,但分区视图不要求主键索引。
视图最多可有 256 个成员表。
必须创建维护应用程序来管理分区和加载。
Microsoft 建议的做法是定义主键,并将事实表设计为本地(单个服务器上)的分区联合视图。大多数情况下,该定义会产生可更新的分区视图,但数据仓库维护应用程序应设计为直接将大多数数据批量加载至成员表(而不是通过视图进行)。