SQL SERVER 2008 表分区
程序员文章站
2022-06-14 23:30:23
...
表分区涉及到几个关键概念:
第一步:创建文件和文件组,并将相应的文件挂入相应的文件组
--增加文件组并给文件组增加文件
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磁盘空间告急(扩容)
推荐阅读
-
sql server 查询某个表被哪些存储过程调用
-
SQL Server 2008的逻辑查询处理步骤
-
jsp 连接sql server 2008 连接不上的解决方法
-
sql server 2008 身份验证失败 18456
-
SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)
-
SQL Server 表的管理_关于事务的处理的详解(案例代码)
-
sql server 2008 压缩备份数据库(20g)
-
基于SQL2005 SQL2008 表结构信息查询升级版的详解(含外键信息)
-
SQL Server 2005/2008 导入导出数据常见报错解决方法
-
SQL Server 2008服务器角色和数据库角色