SQL Server表分区功能和文件组的放置.
表分区提供了内建的方法来水平划分表、索引中的数据,同时要管理一个逻辑对象。水平分区是指每一个分区都有同样数量的列,只是减少了行的数量。分区能使超大型表、索引的管理变得简单,减少加载时间,改善查询时间,并允许更小的维护窗口。
SQL Server 2008增强了分区表查询处理功能,包括可识别分区查找操作、在执行计划中访问的分区更好的表现方式,以及新跟踪标志2440.它启用了在并行查询计划中为每个分区分配多线程执行的能力.
数据库数据文件属于文件组,每一个数据库有一个主要的文件组,需要的话我们可以加入另外的文件组。为数据库加入新的文件组通常用于超大型数据库(VLDB),因为它们通过把数据划分成几个阵列,能使备份管理操作变得简单,并潜在提升性能。
CREATE PARTITION FUNCTION根据某列的值来将列映射到分区。例如,对某个datetime数据类型的列进行运算,可以根据年或月把数据划分到不同的文件组。
CREATE PARTITlON FUNCTION的基本语法如下;
CREATE PARTITION FUNCTION partition_function_name(input_parameter_type)
AS RANGE [LEFT | RIGHT]
FOR VALUES ( [ boundary_value [ ,...n ] ])
CREATE PARTITION FUNCTION参数
参 数 | 描 述 |
partition_function_name | 指定了分区函数名 |
input_parameter_type | 指定了分区列的数据类型。不能使用大值数据类型(text、ntext、image、xml、timestamp、varchar(max)、varbinary(max)、nvarchar(max))、CLR用户定义数据类型或者别名数据类型。如果希望根据一个由datetime列来划分袭数据,可以为Input_parameter_type指定datetime |
[LEFT | RIGHT | 定义了boundary_value参数定义的值属于边界的哪一侧 |
[ boundary_value [ ,...n ] ] | 这个参数定义每个分区的值域。可以定义多达999个分区(然而由于性能问题,可能不推荐这样做)。你在这个参数中选择的n个值会产生,n+1个分区 |
一旦创建了分区函数,它就叮以被一个或多个分区方案使用。分区方案把定义在分区函数中的分区映射到实际的文件组。
CREATE PARTITION SCHEME的基本语法如下:
CREATE PARTITFON SCHEME partitton_scheme_name
AS PARTITION partition_function_name
[ALL] TO ({file_group_name | [PRIMARY]}[…,n])
CREATE PARTITION SCHEME参数
参数 | 描述 |
partitton_scheme_name | 指定分区方案的名字 |
partition_function_name | 表示分区方案绑定的分区函数名 |
ALL | 如果指定了ALL,所有分区会映射到file_gruop_name参数指定的文件组 |
{file_group_name | [PRIMARY]} […,n] | 定义分配到每个分区的文件组。如果指定了PRIMARY,分区会存储于主文件组中 |