最近开发一个手机用户统计平台,因为涉及到数据庞大,不得不以一周为单位对统计报表进行分区,所以记录一下,方便以后查看

第一步创建文件分组

对于文件分组共创建了14个,从 xy_group_20141025 到 xy_group_20150125, 下面是最后一个分组,

ADD FILEGROUP xy_group_20150125
GO
ALTER DATABASE xiangyue_pt
ADD FILE
(
NAME = 'xy_20150125',
FILENAME = 'C:\xiangyue_pt\xy_20150125.ndf',
SIZE = 5120 KB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 5120 KB
)TO FILEGROUP xy_group_20150125
GO

第二步创建分区函数 参数是日期的时间戳

这里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_Scheme

AS PARTITION XY_Function

TO([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.partitions
WHERE OBJECT_NAME(OBJECT_ID)='report'

查询下各个分区对应的数据量。

 SELECT *, $PARTITION.XY_Function(date) as '所在分区'
FROM report

至此以上是对表分区的大致方法,可能还有不当之处,其实这些方法我想大家都知道,没什么技术含量,我只是想记录一下罢了,作为一名菜鸟我想是需要的!

最新文章

  1. node07-http
  2. Codeforces Round #375 (Div. 2) F. st-Spanning Tree
  3. 深入理解Bindler
  4. asp.net 新项目遇到的坑
  5. JVM生产环境参数实例及分析[转]
  6. typeof与GetType
  7. CodeForces - 427B (模拟题)
  8. struts.xml中的intercepter
  9. 201521123017 《Java程序设计》第13周学习总结
  10. C语言中如何写一个简单可移植而又足够随机的随机数生成器
  11. 【spark】dataframe常见操作
  12. redis从入门到高可用 Redis复制的原理与优化
  13. Wireshark:couldn&#39;t run dumpcap in child process(附带Linux下探索过程)
  14. jsoup 解析html
  15. How to set the bash display to not show the vim text after exit?
  16. plsql 查询 卡死问题解决
  17. 为什么继续选择DELPHI?
  18. PAT 1038 Recover the Smallest Number[dp][难]
  19. bzoj1143-祭祀
  20. 因为td设置relative导致td的border问题

热门文章

  1. c 判断字符是否为字母 (iswalpha example)
  2. jenkins安装NodeJS遇到的问题
  3. jinja2-过滤器
  4. 【git 命令总结】一
  5. js的dom测试及实例代码
  6. 如何在国内使用google
  7. kotlin中值范围
  8. [Scikit-learn] 2.3 Clustering - kmeans
  9. maven编译正常,运行报错:中没有主清单属性
  10. [C++]单源最短路径:迪杰斯特拉(Dijkstra)算法(贪心算法)