/**/
/*
本文使对现有的数据库中新建一个表进行分区.暂未发现如何对一个已有数据
的表进行分区处理的资料.本文事例仅为本人测试用.其中有很多未考虑之处
和错误,还请大家赐教.
转载请保留此信息 来自http://user.qzone.qq.com/149651816 作者:BG1JT
*/
-- 创建文件组
/**/ /*
为数据库[Mydb]添加4个文件组
*/
ALTER DATABASE Mydb ADD FILEGROUP [ MydbSF1 ]
ALTER DATABASE Mydb
ADD FILE
(NAME = ' MydbSF1 ' ,
FILENAME = ' D:db abuTbMydbSF1.ndf ' ,
FILEGROWTH = 1 ,
MAXSIZE = UNLIMITED
) TO FILEGROUP
ALTER DATABASE Mydb ADD FILEGROUP [ MydbSF2 ]
ALTER DATABASE Mydb
ADD FILE
(NAME = N ' MydbSF2 ' ,
FILENAME = ' D:db abuTbMydbSF2.ndf ' ,
FILEGROWTH = 1 ,
MAXSIZE = UNLIMITED)
TO FILEGROUP
ALTER DATABASE Mydb ADD FILEGROUP [ MydbSF3 ]
ALTER DATABASE Mydb
ADD FILE
(NAME = N ' MydbSF3 ' ,
FILENAME = N ' D:db abuTbMydbSF3.ndf ' ,
FILEGROWTH = 1 ,
MAXSIZE = UNLIMITED)
TO FILEGROUP
本文使对现有的数据库中新建一个表进行分区.暂未发现如何对一个已有数据
的表进行分区处理的资料.本文事例仅为本人测试用.其中有很多未考虑之处
和错误,还请大家赐教.
转载请保留此信息 来自http://user.qzone.qq.com/149651816 作者:BG1JT
*/
-- 创建文件组
/**/ /*
为数据库[Mydb]添加4个文件组
*/
ALTER DATABASE Mydb ADD FILEGROUP [ MydbSF1 ]
ALTER DATABASE Mydb
ADD FILE
(NAME = ' MydbSF1 ' ,
FILENAME = ' D:db abuTbMydbSF1.ndf ' ,
FILEGROWTH = 1 ,
MAXSIZE = UNLIMITED
) TO FILEGROUP
ALTER DATABASE Mydb ADD FILEGROUP [ MydbSF2 ]
ALTER DATABASE Mydb
ADD FILE
(NAME = N ' MydbSF2 ' ,
FILENAME = ' D:db abuTbMydbSF2.ndf ' ,
FILEGROWTH = 1 ,
MAXSIZE = UNLIMITED)
TO FILEGROUP
ALTER DATABASE Mydb ADD FILEGROUP [ MydbSF3 ]
ALTER DATABASE Mydb
ADD FILE
(NAME = N ' MydbSF3 ' ,
FILENAME = N ' D:db abuTbMydbSF3.ndf ' ,
FILEGROWTH = 1 ,
MAXSIZE = UNLIMITED)
TO FILEGROUP
ALTER DATABASE Mydb ADD FILEGROUP [ MydbSF4 ]
ALTER DATABASE Mydb
ADD FILE
(NAME = N ' MydbSF4 ' ,
FILENAME = N ' D:db abuTbMydbSF4.ndf ' ,
FILEGROWTH = 1 ,
MAXSIZE = UNLIMITED)
TO FILEGROUP [ MydbSF4 ]
/**/ /*
添加文件组结束
*/
-- 创建分区函数
/**/ /*
以数据库表中ID为参考,此处是以1~10,11~20,
21~30,31~&做为4个表分区的界限
*/
CREATE PARTITION FUNCTION pf_Product_Sell ( int )
AS RANGE RIGHT FOR VALUES ( 10 , 20 , 30 )
/**/ /*
将分区界限分别放入4个不同的文件组中
*/
CREATE PARTITION SCHEME [ ps_Product_SchemeSell ] AS PARTITION
pf_Product_fabu TO (MydbSF1,MydbSF2,MydbSF3,MydbSF4)
-- 创建表(在文件组的表分区上)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [ dbo ] . [ Sell ] (
[ id ] [ int ] IDENTITY ( 1 , 1 ) NOT NULL ,
[ userid ] [ int ] NOT NULL
CONSTRAINT [ PK_Sell ] PRIMARY KEY CLUSTERED
(
[ id ] ASC
) WITH (PAD_INDEX = OFF , STATISTICS_NORECOMPUTE = OFF , IGNORE_DUP_KEY = OFF ,
ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [ ps_Product_SchemeSell ] ( [ id ] )
)
/**/ /*
然后大家可以插入数据...
然后用下面的那个查询语句查看PF中的值
是否已经吧不同数据放在不同的分区中了
*/
SELECT * , $PARTITION. [ pf_Product_Sell ] (ID) AS PF
FROM sell
/**/ /*
需要注意的在创建分组文件的时候.必须设置自动增长
并且不要最大值设置为不限,否则在插入数据的时候回
出现错误.
*/
这样处理的时候像上G级别以上单表的数据操作不必每次操作超大的数据库文件了.