先整理一些MSDN里的资料:
SQL SERVER 2005提供了分区表,在SQL SERVER 2005中所有表都是分区表,在默认情况下不过是表具有唯一分区而已。
SQL SERVER 2005中,表页和索引页包含在一个或多个分区中。分区是用户定义的数据组织单元。默认情况下,表和索引只有一个分区,其中包含所有的表页和索引页。该分区驻留在单个文件组中。表和索引在多个分区中时,对应了多个文件组,但查询和更新仍然可将表和索引视为单独的逻辑实体。若要查看表和索引使用的分区,可通过sys.partitions(Transaction-SQL)目录视图。
主要是聚集索引和堆对应着分区。
首先要设计的是分区函数和分区方案。
分区函数定义如何根据某些列(称为分区依据列)的值将表或索引的行映射到一组分区。分区方案将把分区函数指定的每个分区映射到文件组。
分区函数需要考虑的因素是如何对表进行分区的列以及每个分区的分区依据列的值范围。此值范围将确定组成表的分区数。一张表最多可以有1000个分区。
而分区方案是确定要在哪个文件组上放置分区,因为文件组可以独立备份,所以分区方案也决定了可以备份的方案。
分区函数的分区依据列必须显式标记为PERSISTED,除timestamp外,所有有效的索引列数据类型均可作为分区依据列;无法指定 ntext、text、image、xml、varchar(max)、nvarchar(max) 或 varbinary(max) 数据类型。此外,无法指定 Microsoft .NET Framework 公共语言运行时 (CLR) 用户定义类型和别名数据类型列。(指定长度的NVARCHAR和VARCHAR是否可以作为分区依据列?)