• 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:DataFileGroupdb1100.ndf',SIZE = 512kB,FILEGROWTH = 512kB)
    TO FILEGROUP [100]
    GO
    ALTER DATABASE db1
    ADD FILE 
    (NAME = N'200',FILENAME = N'F:DataFileGroupdb1200.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:DataFileGroupdb1300.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

    代码下载

  • 相关阅读:
    题解报告:hdu1995汉诺塔V(递推dp)
    黑色CSS3立体动画菜单
    jQuery计算器插件
    CSS3动画库animate.css
    缩略图悬浮效果的jQuery焦点图
    CSS伪元素实现的3D按钮
    CSS3 3D旋转按钮对话框
    jQuery仿Android锁屏图案应用
    jQuery横向图片手风琴
    jQuery滑动杆打分插件
  • 原文地址:https://www.cnblogs.com/bobsoft/p/3670996.html
Copyright © 2020-2023  润新知