SQLServer水平分表
SQLServer水平分表
最近随着业务量增大,需要对主业务订单的单表进行划分,划分的大概步骤如下
0.对库增加新的文件组,指定好文件
alter database Test add file (name=’test01’,filename=N’D:\tmp\data\test01.ndf’,size=5Mb,filegrowth=5mb) to filegroup s1
alter database Test add file (name=’test02’,filename=N’D:\tmp\data\test02.ndf’,size=5Mb,filegrowth=5mb) to filegroup s2
alter database Test add file (name=’test03’,filename=N’D:\tmp\data\test03.ndf’,size=5Mb,filegrowth=5mb) to filegroup s3
alter database Test add file (name=’test04’,filename=N’D:\tmp\data\test04.ndf’,size=5Mb,filegrowth=5mb) to filegroup s4
1.新建分区函数,指定划分凭据字段 ,datetime是一个数据类型
CREATE PARTITION FUNCTION pf_card2 (datetime) AS RANGE RIGHT FOR VALUES(
‘2016-10-01’,
‘2017-10-01’,
‘2018-10-01’
)
2.新建分区架构(parition schema)指定文件组分区路径
CREATE PARTITION SCHEME ps_card AS PARTITION pf_card TO(s1,s2,s3,s4)
3.新建一张表,on字段指定到之前的分区schema中
create TABLE [dbo].[StampOrder3]
(
[cTeamName] [nvarchar] (255) COLLATE Chinese_PRC_CI_AS NULL,
[CreateDate] [datetime] NULL,
[StampType] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NULL,
[Status] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL,
[GoodsName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL,
[DigitalNum] [nvarchar] (30) COLLATE Chinese_PRC_CI_AS NULL,
[cInvDefine1] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL,
[cInvDefine2] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL,
[cInvDefine3] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL,
[cInvDefine4] [nvarchar] (20) COLLATE Chinese_PRC_CI_AS NULL,
[cInvDefine5] [nvarchar] (60) COLLATE Chinese_PRC_CI_AS NULL,
) ON ps_card([CreateDate])
GO
stamporder3即是分区好的表
4.注意事项,建立索引时,涉及到跨表查询的字段需要建立好分区凭据字段