SQL SERVER 分区表的总结--分区表的维护和管理

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 08:55 点击:

在依据需求建立好分区表之后,就要实现对分区表的管理维护。主要内容就是两点:

1.  利用滑动窗口方案(Sliding Window Scenario),实现分区表与数据移动中间表的互切。

2.  分区表本身的结构变更管理。

当然以上两点,都是理论上的点。我工作中主要是遇到两种需求:

1.  过时分区数据的快速归档管理:即把某些不活跃分区的数据切到数据归档的表中去。

2.  分区表由于数据增长需要添加新分区来处理数据:即已分区的表它所有的数据都会处于活动状态,需要新的分区来承载新增的数据。

这两种需求将会在下面的代码体现出来。分区表沿用我上一篇中的表Product,但是这里称为Products。因为上一篇中的表,测试系统在用,我不能移动数据,就只好克隆出一张表。

 创建一张表结构和主键聚集索引跟Products一模一样的表Products_Tmp(用来做数据移转的中间临时表);这张表还必须跟要移出的分区位于同一个文件组(否则将不能应用Partition Switch进行快速切换)。

首先在新文件组上创建存档表Products_Archive,用于存档后面中间临时表的数据。

 USE [master]

 

GO

 

ALTER DATABASE [TEST]

 

ADD FILEGROUP [FG_TEST_Products_Archive]

 

GO

 

ALTER DATABASE [TEST]

 

ADD FILE ( NAME = N'FG_TEST_Products_Archive_data_1',

 

          FILENAME = N'D:\Data\FG_TEST_Products_Archive_data_1.ndf' ,

 

          SIZE = 50MB ,

 

          FILEGROWTH = 10% )

 

TO FILEGROUP [FG_TEST_Products_Archive]

 

GO

 

 

 

USE TEST

 

GO

 

CREATE TABLE [dbo].[Products_Archive](

 

    [ID] [int] NOT NULL,

 

    [PName] [nvarchar](100) NULL,

 

    [AddDate] [datetime2](3) NULL

 

)ON [FG_TEST_Products_Archive];

 

GO

 

 

接下来,就是移转数据的操作了。封装成存储过程,方便调用。本来是想把导数据也写在里面,可是考虑到生产环境数据量较大,会采用其它的导数据方案,就舍弃了。

CREATE PROCEDURE usp_TransferPartitionData_ForArchive

 

  @PartitonNumber INT --要移转分区编号

 

AS

 

DECLARE @filegroup NVARCHAR(100)=N'',   --要移转分区所在文件组

 

        @SQL NVARCHAR(4000)=N'',        --创建中间临时表的动态语句

 

        @rangeValue INT;                --要移转分区边界值上限

 

 

 

SET @rangeValue=(SELECT CAST(VALUE AS INT) FROM sys.partition_range_values WHERE boundary_id=@rangeValue);

 

--这里的赋值,使用我上篇中的自定义函数fn_GetFileForPartition.

 

SET @filegroup=(SELECT [FILEGROUP_NAME] FROM dbo.fn_GetFileForPartition(N'Sch_Product_ID',@rangeValue));

 

SET @SQL=N'CREATE TABLE [dbo].[Products_Tmp](

 

            [ID] [int] NOT NULL,

 

            [PName] [nvarchar](100) NULL,

 

            [AddDate] [datetime2](3) NULL,

 

          CONSTRAINT [PK_Products_Tmp] PRIMARY KEY CLUSTERED

 

         (

 

     &nbs

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • sql常见面试题
      • SQL SERVER 2005性能之跟踪
      • SQL编程(一)
      • LINUX上RMAN自动备份脚本
      • sql server面试题
      • 如何将多个SQL查询统计结果一次显示出来
      • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色
      • SQL小技巧系列 --- 行转列合并
      • sql server 列转行
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1