数据库表分区分区键定义

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定义分区键

对表和索引进行分区的第一步就是定义分区的关键数据。分区键必须作为一个列存在于表中,还必须满足一定的条件。分区函数定义键(也称为数据的逻辑分离)所基于的数据类型。函数只定义键,而不定义数据在磁盘上的物理位置。数据的位置由分区架构决定。换句话说,架构将数据映射到一个或多个文件组,文件组将数据映射到特定的文件,文件又将数据映射到磁盘。分区架构通常使用函数来实现此目的:如果函数定义了五个分区,则架构必须使用五个文件组。文件组不需要各不相同;但是,如果拥有多个磁盘(最好是多个CPU),使用不同的文件组可以获得更好的性能。将架构与表一起使用时,您需要定义用作分区函数的参数的列。

对于范围分区,数据集可以根据逻辑和数据驱动的边界进行划分。实际上,数据分区不可能实现真正的平衡。当以定义分析的特定边界(也称为范围)的方式使用表时,数据的使用即表明范围分区。范围函数的分区键可以只包含一个列,而分区函数可以包含整个域,即使表中可能不存在数据(由于数据完整性/约束)。换句话说,可以为每个分区定义边界,但第一个分区和最后一个分区可能包含最左侧的行(小于最低边界条件的值)和最右侧的行(大于最高边界条件的值)。因此,要将值域限制到特定的数据集,必须将分区与CHECK 约束结合使用。使用CHECK 约束强制应用业务规则和数据完整性约束,使您可以将数据集限制到特定的范围,而不是不确定的范围。当维护和管理过程中需要定期存档大量数据,当查询访问范围子集内的大量数据时,范围分区是理想的选择。

索引分区

除了对表的数据集进行分区之外,还可以对索引进行分区。使用相同的函数对表及其索引进行分区通常可以优化性能。当索引和表按照相同的顺序使用相同的分区函数和列时,表和索引将对齐。如果在已经分区的表中建立索引,SQL Server 会自动将新索引与该表的分区架构对齐,除非该索引的分区明显不同。当表及其索引对齐后,SQL Server 则可以更有效地将分区移入和移出分区表,因为所有相关的数据和索引都使用相同的算法进行划分。

如果定义表和索引时不仅使用了相同的分区函数,还使用了相同的分区架构,则这些表

和索引将被认为是按存储位置对齐。按存储位置对齐的一个优点是,相同边界内的所有数据都位于相同的物理磁盘上。在这种情况下,可以单独在某个时间段内执行备份操作,还可以根据数据的变化在备份频率和备份类型方面改变您的策略。如果连接或收集了相同文件或文件组中的表和索引,则可以发现更多的好处。SQL Server 可以通过在多个分区中并行操作来获益。在按存储位置对齐和多CPU 的情况下,每个处理器都可以直接处理特定的文件或文件组,而不会与数据访问产生任何冲突,因为所有需要的数据都位于同一个磁盘上。这样,可以并行运行多个进程,而不会相互干扰。

相关文档
最新文档