在对表或索引进行分区前,必须计划创建下列数据库对象: 分区函数
分区方案
分区函数定义如何根据某些列(称为分区依据列)的值将表或索引的行映射到一组分区。 分区方案将把分区函数指定的每个分区映射到文件组。计划分区函数
在计划分区函数时,需要考虑下列两个因素:其值确定如何对表进行分区的列(称为分区依据列)及每个分区的分区依据列的值范围。此值范围将确定组成表的分区数。一张表最多可以有 1000 个分区。可以对分区依据列和值范围所做的选择主要是由区确定的,可以按逻辑方式(如按日期)将数据分组到区上,此逻辑分组是否足够用来管理数据的子集也是主要决定因素。例如,在 AdventureWorks 示例数据库的分区方案下,TransactionHistory 和 TransactionHistoryArchive 表是按 TransactionDate 字段分区的。每个分区的值范围为一个月。TransactionHistory 表维护年度中最新的事务,而 TransactionHistoryArchive 维护以前的事务。通过用这种方法对表进行分区,可以按月将单个月的旧数据快速且有效地从 TransactionHistory 传输到 TransactionHistoryArchive。 除 timestamp 数据类型、Microsoft .NET Framework 公共语言运行时 (CLR) 用户定义数据类型以及别名数据类型之外,数据类型可用作索引键的任何列,也可以被指定为分区依据列。

解决方案 »

  1.   

    有关介绍你应该参考msdn
    http://msdn.microsoft.com/zh-cn/library/ms345146.aspx例子参考
    http://blog.csdn.net/jinjazz/archive/2008/06/24/2582235.aspx
      

  2.   

    http://blog.csdn.net/jinjazz/archive/2008/06/24/2582235.aspx--drop database dbPartitionTest--测试数据库  create database dbPartitionTestgouse dbPartitionTestgo--增加分组alter database dbPartitionTest ADD FILEGROUP P200801alter database dbPartitionTest ADD FILEGROUP P200802alter database dbPartitionTest ADD FILEGROUP P200803go--分区函数CREATE PARTITION FUNCTION part_Year(datetime) AS RANGE LEFT FOR VALUES ( '20080131 23:59:59.997','20080229 23:59:59.997','20080331 23:59:59.997') go--增加文件组ALTER DATABASE dbPartitionTest ADD FILE (NAME = N'P200801',FILENAME = N'c:\tb_P200801.ndf',SIZE = 1MB,MAXSIZE = 500MB,FILEGROWTH = 1MB)TO FILEGROUP P200801ALTER DATABASE dbPartitionTest ADD FILE (NAME = N'P200802',FILENAME = N'c:\tb_P200802.ndf',SIZE = 1MB,MAXSIZE = 500MB,FILEGROWTH = 1MB)TO FILEGROUP P200802ALTER DATABASE dbPartitionTest ADD FILE (NAME = N'P200803',FILENAME = N'c:\tb_P200803.ndf',SIZE = 1MB,MAXSIZE = 500MB,FILEGROWTH = 1MB)TO FILEGROUP P200803go--分区架构CREATE PARTITION SCHEME part_YearScheme  AS PARTITION part_Year   TO (P200801,P200802,P200803,[PRIMARY])goCREATE TABLE [dbo].t_part  (name varchar(100) default newid(),date datetime NOT NULL)ON part_YearScheme (date)go--添加测试数据,每天1条declare @date datetimeset @date='2007-12-31'while @date<='2008-04-01'begin    insert into t_part(date)values(@date)    set @date=@date+1endgo--查询数据分布在哪些分区select $partition.part_Year(date) as 分区编号,* from t_part  order by date  --查询数据库文件gosp_helpfile 
      

  3.   

    CREATE   TABLE   "SYSTEM"."AAA"("A"   VARCHAR2(10),   "B"   VARCHAR2(10))     PARTITION   BY   RANGE   (B,A)   (PARTITION   "AAAB"     VALUES   LESS   THAN     (MAXVALUE,MAXVALUE)   TABLESPACE   "TEMP"   )   
        
      创建表SYSTEM.AAA   
      表分区名称AAAB   
      列B,A存储值小于MAXVALUE,MAXVALUE   
      表空间TEMP
      

  4.   

     对SQL Server数据表进行分区的过程分为三个步骤:  1)建立分区函数  2)建立分区方案  3)对表格进行分区  第一个步骤:建立分区函数  分区函数定义how,即你想要SQL Server如何对数据进行分区。这里就不以某一个表格作为例子,而是总体概括分割数据的技术。  分区是通过指定每个分区的分割界线实现的。例如,假定我们有一个Customers表格,里面包含了企业所有的客户的信息,客户信息以唯一的客户号进行辨识,客户号从1到1000000。我们可以运用以下的分区函数(这里称之为customer_Partfunc)把这个表格平均分为四个分区:  CREATE PARTITION FUNCTION customer_partfunc (int) 
      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)