详细讲解SQL Server 2005的表分区操作
对现有的数据库中新建一个表进行分区
示例:
--创建文件组 /**//* 为数据库[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级别以上单表的数据操作不必每次操作超大的数据库文件了。而且对I/O物理磁盘瓶颈的减轻十分有效。
版权声明:本文由驱动中国整理发布,转载需注明出处与原文链接。如有疑问请联系
editor@qudong.com。
本文价值
★★★★★
—
成为第一个评分的人
登录后为本文打分
评论加载中…