SQL server 2005 中的分区表(代码示例)

在SQL server 2005中一个新的特性——分区表。

建立分区表的步骤:
1 创建数据库(必须在多个文件组中)
2 创建分区函数
3 创建分区Scheme
4 创建分区表

USE  master;
GO
IF   OBJECT_ID  (N ' PartitionDataBase ' IS   NOT   NULL
DROP   DATABASE  PartitionDataBase;
GO
/*  CREATE DATABASE  */
CREATE   DATABASE  PartitionDataBase
ON   PRIMARY
(
NAME 
=  N ' File_A_H ' ,FileName  =   ' D:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/PartitionDataBase_AH.mdf '
),
FILEGROUP FileGroup_I_N
(
NAME 
=  N ' File_I_N ' ,FileName  =   ' D:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/PartitionDataBase_IN.mdf '
),
FILEGROUP FileGorup_M_Z
(
NAME 
=  N ' File_M_Z ' ,FileName  =   ' D:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/PartitionDataBase_MZ.mdf '
)
GO
USE  PartitionDataBase;
GO
/*  创建分区函数  */
CREATE  PARTITION  FUNCTION  StaffNameRangePFN( varchar ( 100 ))
AS
RANGE 
LEFT   FOR   VALUES  ( ' H ' , ' M ' )
GO
/*  创建分区Scheme  */
CREATE  PARTITION SCHEME StaffNamePScheme 
AS
PARTITION StaffNameRangePFN
TO  ( [ PRIMARY ] , FileGroup_I_N, FileGorup_M_Z)
GO
IF   OBJECT_ID  (N ' Staff ' IS   NOT   NULL
DROP   TABLE  dbo.Staff;
/*  创建分区表  */
CREATE   TABLE   [ dbo ] . [ Staff ]   
(
[ StaffName ]   [ varchar ] ( 100 NOT   NULL
)
ON  StaffNamePScheme ( [ StaffName ] )
GO
CREATE   CLUSTERED   INDEX  IX_StaffName  ON   [ Staff ] ( [ StaffName ] )
GO

下面的代码将Staff表按StaffName分布到三个分区中。

插入一些测试数据

INSERT   INTO   [ dbo ] . [ Staff ]
SELECT  FirstName  FROM  AdventureWorks.Person.Contact

运行下面的代码,看看数据的分布情况

SELECT  
    $partition.StaffNameRangePFN(StaffName) 
AS   [ Partition Number ] ,
    
MIN (StaffName)  AS   [ Min StaffName ] ,
    
MAX (StaffName)  AS   [ Max StaffName ] ,
    
COUNT (StaffName)  AS   [ Rows In Partition ]
FROM  dbo.staff  AS  o
GROUP   BY  $partition.StaffNameRangePFN(StaffName)
ORDER   BY   [ Partition Number ]

看起来还不错。三个分区都差不多的数据

我们来打破这个平衡

INSERT   INTO   [ dbo ] . [ Staff ]
SELECT  AddressLine1  FROM  AdventureWorks.Person.Address

修改分区表的步骤:
1 添加一个文件组到数据库
2 修改分区Scheme
3 修改分区函数

Use  master
GO
ALTER   DATABASE  PartitionDataBase  ADD  FILEGROUP FileGroup_0_9
GO
ALTER   DATABASE  PartitionDataBase
ADD   FILE  
(
NAME 
=  N ' File_0_9 ' ,FileName  =   ' D:/Program Files/Microsoft SQL Server/MSSQL.1/MSSQL/DATA/PartitionDataBase_09.mdf '
)
TO  FILEGROUP FileGroup_0_9
GO
Use  PartitionDataBase
GO
ALTER  PARTITION SCHEME StaffNamePScheme
NEXT  USED FileGroup_0_9;
GO
ALTER  PARTITION  FUNCTION  StaffNameRangePFN()
SPLIT RANGE (
' A ' );
GO

请注意修改和创建之间的一些差别

再用上面的代码看看数据分布的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值