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

第一步创建文件分组

对于文件分组共创建了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

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

MS SQL 2012表分区的更多相关文章

  1. SQL Server表分区的NULL值问题

    SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,但是本人觉得已经够用了 虽然MySQL支持四种分区类型:RANGE分区.LIST分区.HASH分区 ...

  2. SQL Server表分区【转】

    转自:http://www.cnblogs.com/knowledgesea/p/3696912.html SQL Server表分区   什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在 ...

  3. SQL Server表分区详解

    原文:SQL Server表分区详解 什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆 ...

  4. SQL Server 表分区备忘

    1.创建的代码如下: )) AS RANGE LEFT FOR VALUES ( N', N', N',... ) CREATE PARTITION SCHEME [01_SubjectiveScor ...

  5. SQL Server表分区-水平分区

    SQL Server表分区,sql server水平分区 转自:http://www.cnblogs.com/knowledgesea/p/3696912.html  根据时间的,直接上T-SQL代码 ...

  6. SQL Server 2012 表分区

    转载于:https://www.cnblogs.com/knowledgesea/p/3696912.html 什么是表分区 一般建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数 ...

  7. 8、SQL Server 表分区

    什么是表分区?表分区其实就是将一个大表分成若干个小表.表分区可以从物理上将一个大表分成几个小表,但是逻辑上还是一个表.所以当执行插入.更新等操作的时候,不需要我们去判断应该插入或更新到哪个表中.只需要 ...

  8. SQL Server表分区案例

    --学习创建表分区脚本/*SQL SERVER 2005中以上版本,终于引入了表分区,就是说,当一个表里的数据很多时,可以将其分拆到多个的表里,大大提高了性能.下面举例子说明之*/ --------- ...

  9. SQL Server2005 表分区三步曲(zz)

    前言 SQL Server 2005开始支持表分区,这种技术允许所有的表分区都保存在同一台服务器上.每一个表分区都和在某个文件 组(filegroup)中的单个文件关联.同样的一个文件/文件组可以容纳 ...

随机推荐

  1. 删除git中无用的大文件

    推荐阅读:为什么你的 Git 仓库变得如此臃肿 有时候我们不小心提交了一些大文件上去,后来删除了,但是已经于事无补了,整个git的提及已经蹭蹭上去了. 这个时候怎么办呢? 1. 查看有哪些大文件(to ...

  2. 7月清北学堂培训 Day 4

    今天是丁明朔老师的讲授~ 图论 图是种抽象结构,这种抽象结构可以表示点与点之间的关系. 最短路: Dijkstra(堆优化) SPFA Floyd 最小生成树: Kruscal 连通性: BFS / ...

  3. try catch块的秘密

    最近有同事遇到问题: 她在4处手动抛运行异常,5处存在return语句,结果程序在2出现异常时没有抛出运行异常,导致事务不一致. 我们都知道,当程序出现异常时候并且在不采取任何措施的情况下,是会抛出异 ...

  4. csp-s模拟110

    倒计时三天. 这场又是巨头们的AK场,大众分200+,貌似真实的csps? 然而T1又炸了,$1<<62$暴int,要$1ll<<62$.T2试图打70部分分,T3也只会40分 ...

  5. Installing the Solidity Compiler¶

    Versioning¶ Solidity versions follow semantic versioning and in addition to releases, nightly develo ...

  6. java Date 转mysql timestamp 秒数不一致

    mysql的字段类型是timestamp(0), java的类型的是util.Date, 在插入数据的时候发现, 数据库的实际数据秒数比预想的数据偶尔会大1秒. 问题的原因: mysql的timest ...

  7. nginx 记录

    正则 ~ 区分大小写匹配 ~* 不区分大小写匹配 !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 ^ 以什么开头的匹配 $ 以什么结尾的匹配 转义字符\ 可以转. * ?等 * 代表任意字符 ...

  8. [SQL]as的是否可以省略的问题

    数据库中as主要作用是起别名,常规来说都可以省略,但是为了增加可读性,不建议省略.

  9. [Scikit-learn] 1.1 Generalized Linear Models - Comparing various online solvers

    数据集分割 一.Online learning for 手写识别 From: Comparing various online solvers An example showing how diffe ...

  10. 用Keras搭建神经网络 简单模版(五)——RNN LSTM Regressor 循环神经网络

    # -*- coding: utf-8 -*- import numpy as np np.random.seed(1337) import matplotlib.pyplot as plt from ...