zoukankan      html  css  js  c++  java
  • 对已有表进行分区

    目标数据库:BOEE

    分区表:CB_PRODUCT

    分区字段:ID

    主要步骤:对于已经存在的表,我们可以采取以下步骤来对其创建分区表

      1.添加文件组

      2.设置默认的文件组

         3.创建分区函数
         4.创建分区架构并关联到分区函数
         5.删除已经存在的聚集索引(我这里是主键,取消主键约束即删除了索引)
         6.基于分区架构重建聚集索引

      

    --修改数据库,创建文件组
    ALTER DATABASE BOEE
    ADD FILEGROUP FG1
    GO
    ALTER DATABASE BOEE
    ADD FILEGROUP FG2
    GO
    ALTER DATABASE BOEE
    ADD FILEGROUP FG3
    GO
     
    --添加次要数据文件
    ALTER DATABASE BOEE
    ADD FILE
    (
        NAME=PRODUCT1,
        FILENAME=N'D:DATAPRODUCT1.ndf',
        SIZE=5,
        MAXSIZE=500,
        FILEGROWTH=1 
    )
    TO FILEGROUP FG1
    GO
     
    --添加次要数据文件
    ALTER DATABASE BOEE
    ADD FILE
    (
        NAME=PRODUCT2,
        FILENAME=N'D:DATAPRODUCT2.ndf',
        SIZE=5,
        MAXSIZE=500,
        FILEGROWTH=1 
    )
    TO FILEGROUP FG2
    GO
     
    --添加次要数据文件
    ALTER DATABASE BOEE
    ADD FILE
    (
        NAME=PRODUCT3,
        FILENAME=N'D:DATAPRODUCT3.ndf',
        SIZE=5,
        MAXSIZE=500,
        FILEGROWTH=1 
    )TO FILEGROUP FG3
    GO
     
    --设置默认的文件组
    ALTER DATABASE BOEE
    MODIFY FILEGROUP FG1  DEFAULT
    GO
    /*
     *创建分区函数
     *分区表中的Id范围为1-200000的数据被分到FG1中
     *分区表中的Id范围为200001-400000数据被分到FG2中
     *分区表中的Id范围为400000+的数据被分到FG3中
     */
    CREATE PARTITION FUNCTION PRODUCT_FUC(INT) AS RANGE LEFT FOR VALUES(200000,400000)
    GO
    --创建分区方案
    CREATE PARTITION SCHEME PRODUCT_SCHEME
    AS PARTITION PRODUCT_FUC TO(FG1,FG2,FG3)
    GO
     
     
    --查看cb_product 索引情况
    exec sp_helpindex N'cb_product'
     
    GO
    --解除主键约束
    alter table cb_product
    drop constraint PK_cb_product
    GO
    ---重建索引(删除聚集索引以及需要分区字段的索引后重建该类索引,表被按分区值将分配到各文件组)
    CREATE CLUSTERED INDEX IDX_PRODUCT_ID ON CB_PRODUCT(ID) ON PRODUCT_SCHEME(ID)
    GO
    --
    ALTER TABLE CB_PRODUCT
    ADD CONSTRAINT PK_PRODUCT_ID PRIMARY KEY(ID)
    GO
     
    --分区完成,大功告成
    
    SELECT * FROM SYS.PARTITIONS
     
    GO
    --查看分区情况
    select $partition.PRODUCT_FUC(ID) as partition_num,count(*) as record_num from CB_PRODUCT group by $partition.PRODUCT_FUC(ID) order by $partition.PRODUCT_FUC(ID)

      本文章仅供参考,没有过多的解释

  • 相关阅读:
    Linux 查看进程文件文件位置
    硬盘io检查
    centos 一些需要注意的问题
    docker 日常使用问题
    Linux命令行访问网站工具
    开箱即用instantbox
    docker 使用
    在js中关于同名变量和函数的地位争夺问题
    玩转图片上传————原生js XMLHttpRequest 结合FormData对象实现的图片上传
    在vue组件中style scoped中遇到的坑
  • 原文地址:https://www.cnblogs.com/xuyubing/p/3785970.html
Copyright © 2011-2022 走看看