https://www.cnblogs.com/JiangLe/p/4005904.html 

 

SQL Server 分区表的创建方法与管理

背景知识:

            分区表、可以把表中的数据按范围保存到不同的文件组中。


           举个例子吧:

                          2014年以前的数据保存到文件组A

                          2014~2015的数据保存到文件组B

                          2015年以后的数据保存到文件组C

            好处:

                   1、提高IO性能 --- 文件组中的文件可以位于不同的磁盘,多磁盘协同工作,提升性能。

                   2、方便管理 --- 备份方面为管理提供了更多的选择,数据归档方便。

前期准备:添加文件组与文件

             alter database Studio
             add filegroup FG1;
             go


             alter database Studio
             add filegroup FG2;
             go


             alter database Studio
             add filegroup FG3;
             go

 

             alter database Studio
             add file(name = FG1_File,filename='E:\DB\FG1_File.ndf');
             go


             alter database Studio
             add file(name = FG2_File,filename='E:\DB\FG2_File.ndf');
             go


             alter database Studio
             add file(name = FG3_File,filename='E:\DB\FG3_File.ndf');
             go

                   

操作 1、

         创建分区表,分如下几步

 

第一步 、

          创建分区函数:

                           它用来把表从逻辑上分成不同的几份   如: 0~2014,2014~2015,2015~....

                           create partition function pf_for_myTable(datetime)
                           as range left
                           for values('2014-01-01','2015-01-01');
                           go  -- 把表从逻辑上分成三份。或是说三个不同的逻辑分区 

                           SQL Server 分区表的创建方法与管理


第二步:

         创建分区方案、它主要是把表的逻辑分区与数据库中的文件组绑定。比如说:第一个分区保存到FG1,第二个分区保存到FG2,第三个分区保存到FG3

         create partition scheme ps_for_myTable
         as partition pf_for_myTable
         to (FG1,FG2,FG3);
         go

         SQL Server 分区表的创建方法与管理

第三步:

         建表

         create table myTable2(DT datetime, DataValue nvarchar(30))
         on ps_for_myTable(DT);

 

操作 2、

         查看指定数据所在的分区

         $partition.partition_function_name(value);

         select $partition.pf_for_myTable('2014-10-04');

         SQL Server 分区表的创建方法与管理

操作 3、

         为表添加新的分区。

         第一步:修改分区方案

                  指定下一个分区使用的文件组。

                  alter partition scheme ps_for_myTable
                  next used [primary];
                  go

        第二步:修改分区函数

                   alter partition function pf_for_myTable() -- 看到没有这个没有加datatime 加了就错了
                   split range ('2016-01-01');
                   go

操作 4、

          移除分区

          第一步:

                   alter partition function pf_for_myTable()
                   merge range('2016-01-01');
                   go

操作 5、

         把分区移动到不同的表

                                    前期准备工作

                                   create table myTableHistory(DT datetime, DataValue nvarchar(30));
                                   go -- 两个表的定义要完全一样,分不分区的没有关系

        第一步:

                 移动

                 alter table myTable2 switch partition 1

                 to myTableHistory;
                 go

                

                 它的基本语法如下:

                 alter table source_table_name switch  [partition partition_number]

                 to [schema.] target_table_name [partition partition_number]

总结: