MSSQL分区表

最近,因日志记录大增,决定试用分区表,记录如下:

一、创建分区表,加载测试数据

use db1
GO
Create PARTITION FUNCTION IntRangePFN(int) /*创建分区函数*/
AS
RANGE LEFT FOR VALUES (
100,    -- X<= 100
200     -- 100<X<=200
)
GO
 /*创建文件组*/
ALTER DATABASE db1 ADD FILEGROUP [100]
GO
ALTER DATABASE db1 ADD FILEGROUP [200]
GO
ALTER DATABASE db1
ADD FILE 
(NAME = N'100',FILENAME = N'F:\DataFileGroup\db1\100.ndf',SIZE = 512kB,FILEGROWTH = 512kB)
TO FILEGROUP [100]
GO
ALTER DATABASE db1
ADD FILE 
(NAME = N'200',FILENAME = N'F:\DataFileGroup\db1\200.ndf',SIZE = 512kB,FILEGROWTH = 512kB)
TO FILEGROUP [200]
GO
CREATE PARTITION SCHEME [IntRangePScheme] /*创建建立分区架构*/
AS
PARTITION IntRangePFN TO
( 
  [100],[200],[PRIMARY]
)
GO
/*创建测试表,加载数据*/
USE db1
GO
CREATE TABLE [dbo].[Test](
    [id] int,    
    [name] [nvarchar](100) NULL,
     PRIMARY KEY (id) ON [PRIMARY]
) ON  IntRangePScheme(id)
GO
use db1
go
insert into [test](id,name) values(1,'1')
go
insert into [test](id,name) values(101,'101')
/*验证数据*/
select $partition.IntRangePFN(id),*
from [test] a
order by a.id asc
go

二、分区表的合并,拆分

拆分

--添加一个  200< X <=300 分区
ALTER DATABASE db1 ADD FILEGROUP [300] /*新增加一个NDF文件,用于存储新数据*/
GO
ALTER DATABASE db1
ADD FILE 
(NAME = N'300',FILENAME = N'F:\DataFileGroup\db1\300.ndf',SIZE = 5MB,FILEGROWTH = 5MB)
TO FILEGROUP [300]
GO
Alter Partition Scheme [IntRangePScheme] Next Used [PRIMARY] /*添加新分区*/
GO 
ALTER PARTITION FUNCTION IntRangePFN()
SPLIT RANGE (300);
go
insert into [test](id,name) values(201,'201')
go
/*验证数据*/
select $partition.IntRangePFN(id),*
from [test] a
order by a.id asc
go

合并

--合并 100< X <=200 , 200< X <=300 两个分区 
Alter Partition Function IntRangePFN() Merge Range(200) 
go
select $partition.IntRangePFN(id),*
from [test] a
order by a.id asc
go

 

总结:

      1.先创建分区(100,200): X1<=100,100<X2<=200,X3>200 三个区间

      2.将X>200区间 拆分成 200<X1<=300,X2>300两个区间,即(100,200,300);

         拆分之后: 总区间为: X1<=100,100<X2<=200,200<X3<=300,X4>300

     3.合并区间100<X1<=200,200<X2<=300 为100<X<=300

         合并之后: 总区间为:X<=100,100<X1<=300,X2>300

代码下载

转载于:https://www.cnblogs.com/bobsoft/p/3670996.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值