在对表或索引进行分区前,必须计划创建下列数据库对象: 分区函数
分区方案
分区函数定义如何根据某些列(称为分区依据列)的值将表或索引的行映射到一组分区。 分区方案将把分区函数指定的每个分区映射到文件组。计划分区函数
在计划分区函数时,需要考虑下列两个因素:其值确定如何对表进行分区的列(称为分区依据列)及每个分区的分区依据列的值范围。此值范围将确定组成表的分区数。一张表最多可以有 1000 个分区。可以对分区依据列和值范围所做的选择主要是由区确定的,可以按逻辑方式(如按日期)将数据分组到区上,此逻辑分组是否足够用来管理数据的子集也是主要决定因素。例如,在 AdventureWorks 示例数据库的分区方案下,TransactionHistory 和 TransactionHistoryArchive 表是按 TransactionDate 字段分区的。每个分区的值范围为一个月。TransactionHistory 表维护年度中最新的事务,而 TransactionHistoryArchive 维护以前的事务。通过用这种方法对表进行分区,可以按月将单个月的旧数据快速且有效地从 TransactionHistory 传输到 TransactionHistoryArchive。 除 timestamp 数据类型、Microsoft .NET Framework 公共语言运行时 (CLR) 用户定义数据类型以及别名数据类型之外,数据类型可用作索引键的任何列,也可以被指定为分区依据列。
http://msdn.microsoft.com/zh-cn/library/ms345146.aspx例子参考
http://blog.csdn.net/jinjazz/archive/2008/06/24/2582235.aspx
创建表SYSTEM.AAA
表分区名称AAAB
列B,A存储值小于MAXVALUE,MAXVALUE
表空间TEMP
AS RANGE RIGHT
FOR VALUES (250000, 500000, 750000)
这些分割界线指定了四个分区。第一个分区包含所有值小于250000的记录。第二个分区包含所有值在250000和499999之间的记录。而第三个分区包含所有值在500000和749999之间的记录。其他所有大于或等于750000的记录都包含在第四个分区里。 注意这个例子中使用了“RANGE RIGHT”从句。这说明分界值是在分区的右边。同样,如果使用的是“RANGE LEFT”从句,那么第一个分区就会包含所有值小于或等于250000的记录;第二个分区就会包含所有值在250001和500000之间的记录,如此类推。 第二个步骤:建立分区方案 一旦建立完定义如何对数据进行分区的分区函数之后,下一步就是建立一个分区方案,定义where,即你想在哪里对数据进行分区。这是一个很直接明了的过程,例如,如果我有四个文件组,名称分别从“fg1”到“fg4”,那么就可以使用以下分区方案: CREATE PARTITION SCHEME customer_partscheme
AS PARTITION customer_partfunc
TO (fg1, fg2, fg3, fg4)
注意我们现在把一个分区函数连接到了分区方案,但是我们还没有把分区方案连接到任何具体的数据库表格。这就是重复使用功能发挥功能的时候。我们可以通过这个功能把分区方案(或者只是分区函数)用于数据库表格的任何数据上。 第三个步骤:对表格进行分区 建立好分区方案之后,就可以开始对表格进行分区了。这是最简单的一个步骤,只需要在表格创建语句中添加“ON”从句,指定表格分区方案和要应用该分区方案的表列。你不需要指定分区函数,因为分区方案已经定义了分区函数。 举个例子,假设你想要用上述的分区方案来创建一个客户表格,你需要使用以下Transact-SQL语句: CREATE TABLE customers (FirstName nvarchar(40), LastName nvarchar(40), CustomerNumber int)
ON customer_partscheme (CustomerNumber)