SQL Server 继续在文件组中的所有对象之间平衡分配。如果增加给定操作使用的磁盘数,虽然 SQL Server 可以更有效地运行,但从管理或维护的角度来说,增加磁盘数并非最佳选择,尤其是在使用模式几乎可以预测(且已隔离)的情况下。因为数据在磁盘上的位置并不明确,所以您无法隔离数据以执行备份等维护操作。
通过 SQL Server 2005 中的分区表,可以对表进行设计(使用函数和架构),从而将具有相同分区键的所有行都直接放置到(且总是转到)特定的位置。函数用于定义分区边界以及放置第一个值的分区。在使用 LEFT 分区函数时,第一个值将作为第一个分区中的上边界。在使用 RIGHT 分区函数时,第一个值将作为第二个分区的下边界(本文后面将更详细地介绍分区函数)。定义函数后即可创建分区架构,以定义分区到其数据库位置的物理映射(根据分区函数)。当多个表使用同一个函数(但不一定使用同一个架构)时,将按类似的方式对具有相同分区键的行进行分组。此概念称为对齐。通过将来自多个表但具有相同分区键的行对齐到相同或不同的物理磁盘上,SQL Server 可以(如果优化程序做出此选择)只处理每个表中必要的数据组。要实现对齐,两个分区表或索引所在的相应分区之间必须具有某种对应性。它们必须为分区列使用等效的分区函数。如果满足以下条件,两个分区函数则可以用来对齐数据:
SQL Server 允许根据范围进行分区,还允许将表和索引都设计为使用相同的架构,以便更好地对齐。好的设计可以大大提高整体性能,但是,如果数据的使用随着时间而发生变化,该怎么办?如果需要额外的分区,又该怎么办?简化从分区表外部添加分区、删除分区和管理分区等方面的管理工作是 SQL Server 2005 的主要设计目标。
SQL Server 2005 已经考虑了如何简化分区的管理、开发和使用。它在性能和可管理性方面有以下优点:
•
简化了需要进行分区以改善性能或可管理性的大型表的设计和实现。
•
将数据加载到现有分区表的新分区中时,最大程度地减少了对其他分区中的数据访问的影响。
•
将数据加载到现有分区表的新分区中时,性能相当于将同样的数据加载到新的空表中。
•
在存档和/或删除分区表的一个分区时,最大程度地减少了对表中其他分区的访问的影响。
•
允许通过将分区移入和移出分区表来维护分区。
•
提供了更好的伸缩性和并行性,可以对多个相关表执行大量操作。
•
改善了所有分区的性能。
•
缩短了查询优化时间,因为不需要单独优化每个分区。
定义和术语
要在 SQL Server 2005 中实现分区,必须了解一些新的概念、术语和语法。要理解这些新概念,首先我们看一下与创建和放置操作有关的表结构。在以前的版本中,表通常是一个物理和逻辑概念,但使用 SQL Server 2005 分区表和索引,您在存储表的方式和位置方面就有了多种选择。在 SQL Server 2005 中,可以使用以前版本中的相同语法创建表和索引,作为一个表结构放置到 DEFAULT 文件组或用户定义的文件组中。另外,在 SQL Server 2005 中,还可以根据分区架构创建表和索引。分区架构可以将对象映射到一个或多个文件组。为了确定数据的相应物理位置,分区架构将使用了分区函数。分区函数定义了用来定向行的算法,而架构则将分区与其相应的物理位置(即文件组)相关联。换句话说,表仍然是一个逻辑概念,但与以前的版本相比,表在磁盘上的物理位置有了很大的不同;表还可以拥有架构。