首页 > 代码库 > MS SQL 2012表分区
MS SQL 2012表分区
最近开发一个手机用户统计平台,因为涉及到数据庞大,不得不以一周为单位对统计报表进行分区,所以记录一下,方便以后查看
第一步创建文件分组
对于文件分组共创建了14个,从 xy_group_20141025 到 xy_group_20150125, 下面是最后一个分组,
ADD FILEGROUP xy_group_20150125GOALTER DATABASE xiangyue_ptADD FILE(NAME = ‘xy_20150125‘,FILENAME = ‘C:\xiangyue_pt\xy_20150125.ndf‘,SIZE = 5120 KB,MAXSIZE = UNLIMITED,FILEGROWTH = 5120 KB)TO FILEGROUP xy_group_20150125GO
第二步创建分区函数 参数是日期的时间戳
这里Range定义的范围可以是RIGHT或LEFT,我们这里使用的范围是RIGHT,RIGHT表明是<或>=,LEFT表明是<=或>。即<1414252799是一个区,>=1414252799并且<1414857599是一个区......>=1422201599是一个分区,这里相当于分了15个段的分区。
CREATE PARTITION FUNCTION XY_Function (INT)AS RANGE RIGHT FOR VALUES ( 1414252799 ,1414857599 ,1415462399 ,1416067199 ,1416671999 ,1417276799 ,1417881599 ,1418486399 ,1419091199 ,1419695999 ,1420387199 ,1420991999 ,1421596799 ,1422201599)GO
第三步创建分区方案 将创建的分区函数映射到文件组,文件组对应磁盘上的物理数据库文件。
CREATE PARTITION SCHEME XY_SchemeAS PARTITION XY_FunctionTO([PRIMARY],xy_group_20141025, xy_group_20141101, xy_group_20141108, xy_group_20141115, xy_group_20141122, xy_group_20141129, xy_group_20141206, xy_group_20141213, xy_group_20141220, xy_group_20141227, xy_group_20150104, xy_group_20150111, xy_group_20150118, xy_group_20150125)GO
第四步创建表,然后把表链接到分区方案, 使用[date]作为分区列。
CREATE TABLE [dbo].[reportbak]( [id] [int] IDENTITY(1,1) NOT NULL, [aid] [int] NOT NULL, [phoneModel] [varchar](100) NULL, [macAddress] [varchar](20) NOT NULL, [installTime] [int] NULL, [position] [varchar](200) NULL, [ip] [varchar](20) NULL, [xiangyueId] [int] NULL, [phoneNumber] [varchar](20) NULL, [uninstallTime] [int] NULL, [publish] [bit] NULL, [solve] [bit] NULL, [perfectPhoto] [bit] NULL, [isEffective] [bit] NULL, [isDeduction] [int] NULL, [onlineTimes] [int] NULL, [weekdays] [int] NULL, [date] [int] NULL,)on XY_Scheme([date])go
分区完毕,这时你可以对表设置主键,索引等
select * FROM sys.partitionsWHERE OBJECT_NAME(OBJECT_ID)=‘report‘
查询下各个分区对应的数据量。
SELECT *, $PARTITION.XY_Function(date) as ‘所在分区‘ FROM report
至此以上是对表分区的大致方法,可能还有不当之处,其实这些方法我想大家都知道,没什么技术含量,我只是想记录一下罢了,作为一名菜鸟我想是需要的!
MS SQL 2012表分区
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。