-- =============================================
-- Author: 余波(杭州)
-- Create date: 2011/09/15
-- Description: 分区表创建基础
-- =============================================
-- 分区表创建的基本步骤是
-- 1、创建文件组
-- 2、在文件组上新增文件,只有有文件的文件组才能创建分区方案
-- 3、创建分区函数 partition function
-- 4、创建分区方案
-- 5、创建分区使用方案的表
------------------创建文件组---------------------
alter database start
add filegroup f1 ----创建名为f1的文件组
alter database start
add filegroup f2 ----创建名为f2的文件组
alter database start
add filegroup f3 ----创建名为f3的文件组
alter database start
add filegroup f4 ----创建名为f4的文件组
----------------在文件组上新增文件----------------
alter database start
add file
(
name=af1,
filename='c:\a_f1.ndf',
size=1MB
)
to filegroup f1
GO
alter database start
add file
(
name=af2,
filename='c:\a_f2.ndf',
size=1MB
)
to filegroup f2
GO
alter database start
add file
(
name=af3,
filename='c:\a_f3.ndf',
size=1MB
)
to filegroup f3
GO
alter database start
add file
(
name=af4,
filename='c:\a_f4.ndf',
size=1MB
)
to filegroup f4
go
----------------创建分区函数----------------------
create partition function p_test(datetime)
as range left
for values('2001-01-02','2003-01-01','2005-01-01')
-----四个分区,left表示三个分割点属于左边区间
----------------创建分区方案----------------------
create partition scheme s_test
as partition p_test
to (f1,f2,f3,f4)
---------------创建分区方案表---------------------
create table t_test
(
s_id int not null identity(1,1),
s_page varchar(100) not null,
s_date datetime not null,
constraint pk_s
primary key(s_date) ----------分区列必须是聚集索引列
) on [s_test](s_date)
--------------查看当前的数据在哪个分区中------------
insert into t_test(s_page,s_date)
select '1','2000-02-01'
union
select '1','2001-02-01'
union
select '1','2003-02-01'
union
select '1','2006-02-01'
select s_date,$partition.p_test(s_date) as partition from t_test
/* 结果
s_date partition
2000-02-01 00:00:00.000 1
2001-02-01 00:00:00.000 2
2003-02-01 00:00:00.000 3
2006-02-01 00:00:00.000 4
*/
-------------增加新的分区-----------------------------
---增加新的分区你可以将的分区加到新的文件组里面(也可以是使用过的)
alter partition scheme s_test -----先为分区方案分配文件组
next used [f1]
alter partition function p_test() ------新增分割点
split range('2004-01-01')
insert into t_test(s_page,s_date)
select '1','2004-02-01'
select s_date,$partition.p_test(s_date) as partition from t_test
/*结果
s_date partition
2000-02-01 00:00:00.000 1
2001-02-01 00:00:00.000 2
2003-02-01 00:00:00.000 3
2004-02-01 00:00:00.000 4
2006-02-01 00:00:00.000 5
*/
--------------合并/删除分割点-----------------
alter partition function p_test()
merge range('2004-01-01')
select s_date,$partition.p_test(s_date) as partition from t_test
/*结果
s_date partition
2000-02-01 00:00:00.000 1
2001-02-01 00:00:00.000 2
2003-02-01 00:00:00.000 3
2004-02-01 00:00:00.000 3
2006-02-01 00:00:00.000 4
*/
注:不管是合并分区或者新增分区,一次只能操作一个分区,不能多个分区同时合并或新增
本文详细介绍了数据库分区表创建的基础步骤,包括创建文件组、新增文件、创建分区函数、分区方案以及表创建等关键环节,并通过实例展示了如何操作。
324

被折叠的 条评论
为什么被折叠?



