SqlServer2005分区表学习总结(2)

2020-02-21 17:26

一个未分配的文件组将被标记为 NEXT USED,并且出现显示命名 NEXT USED 文件组的信息。如果指定了 ALL,则单 独的文件组将为该分区函数保持它的NEXT USED 属性。如果在 ALTER PARTITION FUNCTION 语句中 创建了一个分区,则 NEXT USED 文件组将再接收一个分区。若要再创建一个未分配的文件组来拥有新的 分区,请使用 ALTER PARTITION SCHEME。

分区方案例子1:

下面的代码先创建一个分区函数,然后再创建这个分区函数使用的分区方案,这个分 区方案将每个分区映射到不同文件组。代码如下:

create partition function MyPF1(int)

as range left for values(500000,1000000,1500000) go

create partition scheme MyPS1 as partition MyPF1 to (fg1, fg2, fg3, fg4)

文件组、分区和分区边界值范围之间的关系如下: 文件组 分区 Fg1 Fg2 Fg3 Fg4

分区方案例子2:

下面的代码先创建一个分区函数,然后再创建这个分区函数使用的分区方案,这个分 区方案将多个分区映射到同一个文件组。代码如下:

create partition function MyPF2(int)

as range left for values(500000,1000000,1500000) go

create partition scheme MyPS2 as partition MyPF2 to (fg1, fg1, fg1, fg2)

文件组、分区和分区边界值范围之间的关系如下: 文件组 分区

取值范围,

1 2 3 4

取值范围, [负无穷,500000] [500001,1000000] [1000001,1500000] [1500001,正无穷]

Fg1 Fg1 Fg1 Fg2

1 2 3 4

[负无穷,500000] [500001,1000000] [1000001,1500000] [1500001,正无穷]

分区方案例子3:

下面的代码先创建一个分区函数,然后再创建这个分区函数使用的分区方案,这个分区方案将所有分区映射到同一个文件组。代码如下:

create partition function MyPF3 (int)

as range left for values(500000,1000000,1500000) go

create partition scheme MyPS3 as partition MyPF3 all to (fg1)

文件组、分区和分区边界值范围之间的关系如下表: 文件组 分区 Fg1 Fg1 Fg1 Fg1

1 2 3 4

取值范围, [负无穷,500000] [500001,1000000] [1000001,1500000] [1500001,正无穷]

分区方案例子4:下面的代码先创建一个分区函数,然后再创建这个分区函数使用的分区方案,这个分 区方案指定了“NEXT USED”文件组。代码如下:

create partition function MyPF4(int)

as range left for values(500000,1000000,1500000) --4个分区 go create partition scheme MyPS4

as partition MyPF4 to (fg1, fg2, fg3, fg4, fg5) --5个文件组 那么文件组fg5将自动被标记为“NEXT USED”文件组。

分区方案例子5:下面的代码先创建一个分区函数,然后再创建这个分区函数使用的分区方案,这个分区方案指定了“[primary]”文件组。代码如下:

create partition function MyPF5(datetime) range right for values('2008/01/01', '2009/01/01') go

create partition scheme MyPS5

as partition MyPF5 to([primary], fg1, fg2)

最后必须明白一点,一张表最多只能有1000个分区。 分区表

在分区函数和分区方案创建完成后,创建分区表的准备工作已经完成。我们看一个完整的例子,代码如下:

--创建分区函数

create partition function MyPF(datetime) range right for values('2007-1-1', '2008-1-1') go

--创建分区方案

create partition scheme MyPS as partition MyPF to(fg1, fg2, fg3) go

--创建分区表 create table orders (

OrderID int identity(1,1) primary key, OrderDate datetime, CustID varchar(10) ) on MyPS(OrderDate)

下面的示例完整地演示了SQL Server 2005 分区表的创建、分区查询、分区转换的三种形式:

新建一个文件组

ALTER DATABASE G5_luochuan ADD FILEGROUP [yalc_yygl] 给文件组添加一个文件

ALTER DATABASE G5_luochuan ADD FILE

(NAME=N'PF_QuantityCharge200909',FILENAME=N'F:\\ProjectFiles\\DataFiles\\ G5_luochuan0415\\PF_QuantityCharge.ndf',SIZE = 5MB, MAXSIZE = UNLIMITED,FILEGROWTH = 5MB) TO FILEGROUP [yalc_yygl]

--创建分区函数,分区函数是解决HOW(如何对数据进行分区)的问题 Create Partition Function PF_sMonthRange(varchar(6))

as range left for values('200909','200910') --n不能超过 999,创建的分区数等于 n + 1 创建分区方案,关联到分区函数 。分区方案是解决 where(在哪里对数据进行分区)的问题。

CREATE PARTITION SCHEME ps_sMonth AS PARTITION PF_sMonthRange ALL TO ([yalc_yygl])

创建分区表 IF

EXISTS

(SELECT

*

FROM

sys.objects

OBJECT_ID(N'[PS_QuantityCharge]') AND type in (N'U'))

Drop TABLE [PS_QuantityCharge]; CREATE TABLE [PS_QuantityCharge]( [ID] [varchar](50) NOT NULL, [sMonth] [varchar](6) NOT NULL, [CustomerID] [varchar](50) NULL, [YSDF] [money] NULL, [YHYE] [money] NULL, [ZDF] [money] NULL, [ZDL] [float] NULL, [ZCalcDF] [money] NULL, [TBDF] [money] NULL, [byqf] [money] NULL, [syye] [money] NULL, [Payment] [money] NULL, [CHECKDLDF] [float] NULL, [CalcCount] [int] NULL, [CalcFlag] [int] NULL,

[wyj_DerateMode] [varchar](50) NULL, [wyj_DerateRate] [float] NULL, [wyj_DerateValue] [float] NULL,

[DataDateTime] [datetime] NULL DEFAULT(getdate()),

Constraint PK_PS_QuantityCharge Primary key(id,sMonth) ) on ps_sMonth(sMonth)

WHERE

object_id

=

IF

EXISTS(SELECT

*

FROM

sys.objects

WHERE

object_id

OBJECT_ID(N'[PS_QuantityChargeHistory]') AND type in (N'U'))

Drop TABLE [PS_QuantityChargeHistory]; CREATE TABLE [PS_QuantityChargeHistory]( [ID] [varchar](50) NOT NULL, [sMonth] [varchar](6) not NULL, [CustomerID] [varchar](50) NULL, [YSDF] [money] NULL, [YHYE] [money] NULL, [ZDF] [money] NULL, [ZDL] [float] NULL, [ZCalcDF] [money] NULL, [TBDF] [money] NULL, [byqf] [money] NULL, [syye] [money] NULL, [Payment] [money] NULL, [CHECKDLDF] [float] NULL, [CalcCount] [int] NULL, [CalcFlag] [int] NULL,

[wyj_DerateMode] [varchar](50) NULL, [wyj_DerateRate] [float] NULL, [wyj_DerateValue] [float] NULL,

[DataDateTime] [datetime] NULL DEFAULT(getdate()),

Constraint PK_PS_QuantityChargeHistory Primary key(id,sMonth)

) on ps_sMonth(sMonth)

--查看分区是否成功 SELECT

*

FROM

SYS.PARTITIONS

WHERE

OBJECT_ID

OBJECT_ID('[PS_QuantityCharge]')

SELECT

*

FROM

SYS.PARTITIONS

WHERE

OBJECT_ID

OBJECT_ID('[PS_QuantityChargeHistory]')

=

=

=


SqlServer2005分区表学习总结(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:比丘记事(贤书法师) - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: