首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用分区的热冷数据存储

使用分区的热冷数据存储
EN

Database Administration用户
提问于 2018-05-25 22:15:00
回答 1查看 1.3K关注 0票数 1

我正在一家数据仓库工作,我想把过去三年的数据划分为热数据存储,再过三年就应该放在冷的地方。我希望能够每月运行一个脚本,如果数据变老,我会将数据从热移动到冷,我现在已经在线查看并测试了下面的脚本

代码语言:javascript
复制
Alter Database [Dev_PartionTest] Add Filegroup [HOT_DATA]       --------
Go                                                                  --------
Alter Database [Dev_PartionTest] Add Filegroup [COLD_DATA]       --------
Go                                                                  --------

Alter Database [Dev_PartionTest] Add FILE ( NAME = N'HOT_DATA', FILENAME = N'....\HOT_DATA.ndf' , SIZE = 5120KB , FILEGROWTH = 1024KB, MAXSIZE = 20000MB ) TO Filegroup [HOT_DATA]
Alter Database [Dev_PartionTest] Add FILE ( NAME = N'COLD_DATA', FILENAME = N'..\COLD_DATA.ndf' , SIZE = 5120KB , FILEGROWTH = 1024KB, MAXSIZE = 20000MB) TO Filegroup [COLD_DATA]


 Declare @Previousyear Date
 set @Previousyear = (SELECT DATEADD(year, -2, GETDATE()));

 Create Partition Function [MonthlyPartitionArchive] (datetime)
   as Range Right For Values (@Previousyear,  GETDATE())


Create Partition Scheme RangePartScheme as Partition 
 [MonthlyPartitionArchive]
 To ([COLD_DATA], [HOT_DATA], [PRIMARY])



 Create Clustered Index IDX_Part On Tester(created) 
 On RangePartScheme (created);

你能指导我怎么写这样一个剧本吗?

代码语言:javascript
复制
    Create Partition Function [MonthlyPartitionArchive] (datetime)
   as Range Right For Values (@Previousyear,  GETDATE())

我面临的问题是如果我使用getdate插入记录

代码语言:javascript
复制
 INSERT INTO Tester( Name, gender, created, description )
 VALUES ('Nicks', 'M',GETDATE(), 'Lloyds Office'), 

getdate函数将返回日期高于上述函数中使用的日期时间,以在create分区函数中设置右侧的上界。如何设置当前年度,而不必每次手动键入它。该脚本是否可以在每月更新分区的进程上运行,这是可能的。

EN

回答 1

Database Administration用户

发布于 2018-05-25 22:45:45

你想要的是RANGE LEFT而不是RANGE RIGHT,你只需要在三年内只需要一个单一的边值。

使分区函数如下所示:

代码语言:javascript
复制
Create Partition Function [MonthlyPartitionArchive] (datetime)
 as Range LEFT For Values (@Previousyear);

然后,该计划应是:

代码语言:javascript
复制
Create Partition Scheme RangePartScheme as Partition [MonthlyPartitionArchive]
 To ([COLD_DATA], [HOT_DATA]);

无法创建动态分区函数。您将需要安排一个作业来根据需要更改分区函数。有关如何将其自动化的详细信息,请参阅这个答案

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/207904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档