下面分别说明以下几个方法
- 创建一个或多个文件组来持有分区。
- 把文件加入在分区过程中使用的每个文件组。
- 使用CREATE PARTITION FUNCTION命令来决定表中的数据如何分区。
- 使用CREATE PARTITION SCHEME命令来绑定PARTITION FUNCTION到指定文件组。
- 创建表,绑定某个分区列到PARTITION SCHEME。
创建一个叫Sales.WebSiteHits的表,它用来跟踪一个虚拟网站上的每个点击。在这种情况下,表很快会变得很大,查询可能会因此执行得很慢,而且对整个数据库的备份操作花费的时间比当前的维护窗体允许的时问更长。
为了解决这个应用程序的情况,表中的数据会被水平划分,也就是根据某个列(在这里是HitDate)把几组行映射到磁盘上不同的底层物理文件中。第一部分为AdventureWorks数据库增加新的文件组:
USE AdventureWorks
GO
ALTER DATABASE AdventureWorks
ADD FILEGROUP hitfg1
ALTER DATABASE AdventureWorks
ADD FILEGROUP hitfg2
ALTER DATABASE AdventureWorks
ADD FILEGROUP hitfg3
ALTER DATABASE AdventureWorks
ADD FILEGROUP hitfg4
接着,对于创建的每个新文件组,向其中加入一个新的数据库文件;
ALTER DATABASE AdventureWorks
ADD FILE
(
NAME=awhitfg1,
FILENAME='J:\test\aw_hitfg1.ndf',
SIZE=1MB
)
ALTER DATABASE AdventureWorks
ADD FILE
(
NAME=awhitfg2,
FILENAME='J:\test\aw_hitfg2.ndf',
SIZE=1MB
)
ALTER DATABASE AdventureWorks
ADD FILE
(
NAME=awhitfg3,
FILENAME='J:\test\aw_hitfg3.ndf',
SIZE=1MB
)
ALTER DATABASE AdventureWorks
ADD FILE
(
NAME=awhitfg4,
FILENAME='J:\test\aw_hitfg4.ndf',
SIZE=1MB
)
现在,文件组已经为分区数据准备就绪了,下面创建分区函数,决定表中的数据如何水平划分(在这里是根据日期范围):
CREATE PARTITION FUNCTION HitDateRange (datetime)
AS RANGE LEFT FOR VALUES('1/1/2006','1/1/2007','1/1/2008')
GO
在创建分区函数之后,创建分区方案来绑定分区函数到新的文件组:
CREATE PARTITION SCHEME HitDateRangeScheme
AS PARTITION HitDateRange
TO(hitfg1,hitfg2,hitfg3,hitfg4)
不明原因:
消息 208,级别 16,状态 58,第 1 行
对象名 'HitDateRange' 无效。
最后,CREATE TABLE在ON子句使用HitDate列来创建一个使用这个分区方案的表:
USE AdventureWorks
GO
CREATE TABLE Sales.WebSiteHits
(
WebSiteHitID bigint NOT NULL IDENTITY(1,1),
WebSitePage varchar(255) NOT NULL,
HitDate datetime NOT NULL,
CONSTRAINT PK_WebSiteHits
PRIMARY KEY (WebSiteHitID,HitDate)
)
ON [HitDateRangeScheme] (HitDate)