hujh20 发表于 2018-10-14 06:44:55

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

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-- 把表从逻辑上分成三份。或是说三个不同的逻辑分区
https://images0.cnblogs.com/blog/643807/201410/040731479253019.png
  第二步:
  创建分区方案、它主要是把表的逻辑分区与数据库中的文件组绑定。比如说:第一个分区保存到FG1,第二个分区保存到FG2,第三个分区保存到FG3
  create partition scheme ps_for_myTable
  as partition pf_for_myTable
  to (FG1,FG2,FG3);
  go
https://images0.cnblogs.com/blog/643807/201410/040750269727693.png
  第三步:
  建表
  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');
https://images0.cnblogs.com/blog/643807/201410/041049475661382.jpg
  操作 3、
  为表添加新的分区。
  第一步:修改分区方案
  指定下一个分区使用的文件组。

  >  next used ;
  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
                 to target_table_name
  总结:

页: [1]
查看完整版本: SQL Server 分区表的创建方法与管理