欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL SERVER 2008 表分区

程序员文章站 2022-06-14 23:30:23
...

表分区涉及到几个关键概念:

SQL SERVER 2008 表分区

第一步:创建文件和文件组,并将相应的文件挂入相应的文件组

--增加文件组并给文件组增加文件
ALTER DATABASE DEMO ADD FILEGROUP FILE_GROUP_1
ALTER DATABASE DEMO ADD FILEGROUP FILE_GROUP_2
ALTER DATABASE DEMO ADD FILEGROUP FILE_GROUP_3

--给各个文件组增加相应的数据文件ndf
ALTER DATABASE DEMO
ADD FILE
(NAME=FG1_FILE,
FILENAME='D:\DATA2\FG1_FILE.NDF',
SIZE=1,
MAXSIZE=UNLIMITED,
FILEGROWTH=10%
)
TO FILEGROUP FILE_GROUP_1
--第二个文件组
ALTER DATABASE DEMO
ADD FILE
(NAME=FG2_FILE,
FILENAME='D:\DATA2\FG2_FILE.NDF',
SIZE=1,
MAXSIZE=UNLIMITED,
FILEGROWTH=10%
)
TO FILEGROUP FILE_GROUP_2
--第三个文件组
ALTER DATABASE DEMO
ADD FILE
(NAME=FG3_FILE,
FILENAME='D:\DATA2\FG3_FILE.NDF',
SIZE=1,
MAXSIZE=UNLIMITED,
FILEGROWTH=10%
)
TO FILEGROUP FILE_GROUP_3

第二步:定义分区函数,定义如何根据某些列的值将表或索引的行映射到指定分区。分区函数制定了分区的方式。

USE DEMO
CREATE PARTITION FUNCTION pf_OrderDate (datetime)   
AS RANGE RIGHT   
FOR VALUES ('2006/01/01', '2007/01/01') 
GO

注解:datetime是分区依据字段的数据类型,RIGTH是第一个分区小于边界,第二个分区大于等于边界,依次类推, VALUES是各个边界

FILE_GROUP_1    1        (过去某年, 2006/01/01)
FILE_GROUP_2    2        [2006/01/01, 2007/01/01)
FILE_GROUP_3    3        [2007/01/01,未来某年)

第三步:定义分区方案,负责分配分区函数中设定的每个分区属于哪个文件组

USE DEMO
CREATE PARTITION SCHEME ps_OrderDate 
AS PARTITION pf_OrderDate TO (FILE_GROUP_1,FILE_GROUP_2,FILE_GROUP_3);
GO

第四步:创建分区表并将其绑定到分区方案上,表在创建的时候就已经决定是否是分区表了。

USE DEMO
CREATE TABLE ORDERS
(
	ORDER_ID INT,
	ORDER_DATE DATETIME NOT NULL,
	CUSTOMER_ID INT NOT NULL
)
ON ps_OrderDate(ORDER_DATE)

USE DEMO
CREATE TABLE ORDERS_HISTRORY
(
	ORDER_ID INT,
	ORDER_DATE DATETIME NOT NULL,
	CUSTOMER_ID INT NOT NULL
)
ON ps_OrderDate(ORDER_DATE)

第五步:按分区进行查询数据

USE DEMO
SELECT * FROM ORDERS
WHERE $PARTITION.pf_OrderDate (ORDER_DATE)=3;

注解:$PARITITION.pf_OrderDate (ORDER_DATE)=3 表示查询第三个分区


第六步:分区表中的数据按区进行备份(归档)

USE DEMO
go
alter table orders switch partition 1 to orders_histrory partition 1
go

主要参考文章, 推荐文章:

参考文献1: 深入分析SQL SERVER 2008 分区函数和分区表

参考文献2:SQL SERVER 分区具体例子讲解

参考文献3: SQL SERVER分区分表水平

参考文献4: SQL SERVER磁盘空间告急(扩容)