SqlServer2008实例27管理超大型表之实现表分区

下面分别说明以下几个方法

  • 创建一个或多个文件组来持有分区。
  • 把文件加入在分区过程中使用的每个文件组。
  • 使用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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ngbshzhn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值