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 -- 把表從邏輯上分成三份。或是說三個不同的邏輯分區
第二步:
創建分區方案、它主要是把表的邏輯分區與數據庫中的文件組綁定。比如說:第一個分區保存到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]
總結: