环境:sql server2008

表:tt (16417022条记录)

根据idx(自增)进行表分区。

 

1.先根据表数据的量大小,来拆分每一个分区,保证每一个分区表的记录尽量平均.

--分区函数

CREATE PARTITION FUNCTION IdxRange(bigint)
AS RANGE LEFT FOR VALUES
( 500, 1000,1500) ;

2然后我们需要添加相应的文件组 .我使用的是主文件组.
ALTER DATABASE IP_DATA ADD FILEGROUP [fg500]
ALTER DATABASE IP_DATA ADD FILEGROUP [fg1000]
ALTER DATABASE IP_DATA ADD FILEGROUP [fgbig]

3.我们需要在服务器上建立出单独的文件(涉及到的朋友可能知道,我们如果把文件分布在不同的磁盘上,可以最大限度的提高磁头的读写能力;另:这里微软建议数据库服务器最好--作Raid0 + Raid1).我由于是做测试,所以就放在了一个硬盘上了.

ALTER DATABASE IP_DATA
ADD FILE
(NAME = N'fg500',FILENAME = N'C:\data\fg500.ndf',SIZE = 5MB,MAXSIZE = 1000MB,FILEGROWTH = 5MB)
TO FILEGROUP [fg500];

ALTER DATABASE IP_DATA

ADD FILE
(NAME = N'fg1000',FILENAME = N'C:\data\fg1000.ndf',SIZE = 5MB,MAXSIZE = 1000MB,FILEGROWTH = 5MB)
TO FILEGROUP [fg1000];


ALTER DATABASE IP_DATA
ADD FILE
(NAME = N'fgbig',FILENAME = N'C:\data\fgbig.ndf',SIZE = 5MB,MAXSIZE = 1000MB,FILEGROWTH = 5MB)
TO FILEGROUP [fgbig];

 

4.创建关联

--分区架构

CREATE PARTITION SCHEME IdxRangeScheme
AS
PARTITION IdxRange
ALL TO (fg500,fg1000,fgbig,fgbig);

 

 

--对已经存在的表进行分区设置

--切换到分区表

ALTER TABLE tt
ADD
PRIMARY KEY NONCLUSTERED(idx)
ON IdxRangeScheme(idx)
GO

 

5.创建表和索引(我这里只列出如何创建表)
---

CREATE TABLE 表
{
列信息
}
ON IdxRangeScheme(列)--对应分区字段
GO

posted on 2009-09-04 03:53  草莽  阅读(899)  评论(0编辑  收藏  举报