SQL 2005 表分区 个人实际操作

 
/*
本文使对现有的数据库中新建一个表进行分区.暂未发现如何对一个已有数据
的表进行分区处理的资料.本文事例仅为本人测试用.其中有很多未考虑之处
和错误,还请大家赐教. 
转载请保留此信息 来自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级别以上单表的数据操作不必每次操作超大的数据库文件了.
而且对 I/O 物理磁盘的瓶颈能有效的减轻.

SQL 2005 更多功能继续发觉中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值