SQL Server2005表分区

 ---//创建分区
CREATE PARTITION FUNCTION MarketInfo_Bak_partfunc(int)
AS RANGE RIGHT
FOR VALUES (10000,25000,40000)


--//创建分区架构
CREATE PARTITION SCHEME MarketInfo_Bak_partscheme
  AS PARTITION MarketInfo_Bak_partfunc
  TO (fg1, fg2, fg3, fg4) --//fg1...fg4文件组名


--//对表进行分区

CREATE TABLE 表名(FirstName nvarchar(40), LastName nvarchar(40), Number int)
  ON MarketInfo_Bak_partscheme (Number)

 

 

----///实践操作

这里进行对sql server 2005表分区一次实践操作,这次数据的前提:有这么一个Log表,数据量大概是两千多万条,只保留六个月以内的数据。表里有列LogTime,记录日志的时间。

          分析:对Log分成6个区,分别为PG1,PG2,PG3...PG6;每个区只存储一个月份的数据,以LogTime为分界点(推荐这6个区分别放在不同的物理硬盘上)

          步骤:
                 1.为数据库[TestDB]添加6个文件组及文件组逻辑名称,设定文件组存放的位置。我们暂时设定为PG1,G2…PG6,如果我们的数据库存储着今年1-6月份的数据,则我们的PG1就存放1月份的数据,PG2就存放2月份的数据,以此类推,PG6就存放6月份的数据。
              Alter DATABASE [TestDB]
              Add FILEGROUP [PG1]
              Alter DATABASE [TestDB]
              Add FILE( NAME = N'PG1', FILENAME = N'E:/Database/PG1.ndf' , SIZE = 5242880KB , MAXSIZE = UNLIMITED, FILEGROWTH = 102400KB ) To FILEGROUP [PG1]
上面只列出创建PG1的代码,依次创建PG2,PG3...PG6

               2.创建分区函数:
              Create Partition Function [Data Partition Range](DateTime)
                    AS Range Right For Values ('20070201 00:00:00.000','20070301 00:00:00.000’,'20070401 00:00:00.000','20070501 00:00:00.000','2007-06-01 00:00:00.000')
这里分区函数只有5个分界值,是相对应于之前的6个分区的。

               3.创建分区方案
                  Create Partition Scheme [Data Partition Scheme]
                  As Partition [Data Partition Range]
                  To ([PG1],[PG2],[PG3],[PG4],[PG5],[PG6])

               4.创建与Log表结构相同的表,暂名为Log1,需应用分区方案。
              CREATE TABLE [dbo].[Log1](
                   [logTime] [datetime] NULL,
                   ...
                   ...     
                   ) ON [Data Partition Scheme](LogTime)

               5.将Log表的数据迁移到Log1
                Insert Into Log1 Select * From Log

               6.为Log1表创建分区索引,这里创建索引的时间可能是比较久的,因为本身数据量很大
          CREATE CLUSTERED INDEX [IX_LogTime] ON [dbo].[Log1]( [logTime] ASC )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [Data Partition Scheme]([LogTime])

               7.将Log删除,Log1重命名为Log

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值