背景知识:
分区表、可以把表中的数据按范围保存到不同的文件组中。
举个例子吧:
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 -- 把表从逻辑上分成三份。或是说三个不同的逻辑分区
第二步:
创建分区方案、它主要是把表的逻辑分区与数据库中的文件组绑定。比如说:第一个分区保存到FG1,第二个分区保存到FG2,第三个分区保存到FG3
create partition scheme ps_for_myTable
as partition pf_for_myTable
to (FG1,FG2,FG3);
go
第三步:
建表
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‘);
操作 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]
总结: