当前位置:Gxlcms > 数据库问题 > SQL Server数据归档的解决方案

SQL Server数据归档的解决方案

时间:2021-07-01 10:21:17 帮助过:2人阅读

= NTestDB) DROP DATABASE TestDB; GO CREATE DATABASE TestDB ON PRIMARY (NAME=TestDB_Part1, FILENAME= D:\TestData\Primary\TestDB_Part1.mdf, SIZE=10, MAXSIZE=100, FILEGROWTH=1 ), FILEGROUP TestDB_Part2 (NAME = TestDB_Part2, FILENAME = D:\TestData\Secondary\TestDB_Part2.ndf, SIZE = 10, MAXSIZE=100, FILEGROWTH=1 ); GO

 

 查看数据属性,有点不一样

技术分享

打开数据:

use TestDB

 

新建分区函数,参数类型是bit,即已归档的数据

Create Partition Function TestDB_ArchivePartitionRange(bit) AS RANGE right FOR VALUES(1)

 

新建一个分区方案,即已经归档的数据保存到TestDB_Part2分区文件上

CREATE Partition Scheme TestDB_ArchivePatitionScheme AS PARTITION TestDB_ArchivePartitionRange TO ([PRIMARY], TestDB_Part2);

 

创建一个测试数据表,绑定一个分区方案

CREATE TABLE TestArchiveTable  (Archived Bit NOT NULL, Date DATETIMEON TestDB_ArchivePatitionScheme (Archived)

 

插入一些新的数据,已供测试

INSERT INTO TestArchiveTable (Archived, Date)  VALUES (0,2011-01-01);  INSERT INTO TestArchiveTable (Archived, Date)  VALUES (0,2011-02-01);  INSERT INTO TestArchiveTable (Archived, Date)  VALUES (0,2011-03-01); 

 

先来一个普通查询

技术分享

 

看看每个分区表存放数据的情况,分区一有3条记录,分区2没有记录,即没有归档数据

SELECT * FROM sys.partitions  WHERE OBJECT_NAME(OBJECT_ID)=TestArchiveTable

技术分享

 

好了,我们归档一条记录看看

update TestArchiveTable  set Archived = 1 where Date = 2011-03-01  SELECT * FROM sys.partitions  WHERE OBJECT_NAME(OBJECT_ID)=TestArchiveTable

技术分享

 

结果就是我们想要的。

 

总结:利用分区表不仅能大幅提升数据访问性能,而且可以根据需要分别存储数据到不同的文件,方便我们有效地利用数据,简化系统开发的复杂性。

SQL Server数据归档的解决方案

标签:

人气教程排行