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

第一步创建文件分组

对于文件分组共创建了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. manjaro 18.10 install soft

    1.添加新账户 useradd username新建账户; useradd -d /home/xxx -m xxx创建用户,并同时生成用户目录,不然账户无法正常启用; passwd username修 ...

  2. navicat连接远程数据库报错'client does not support authentication protocol requested by server consider ...'解决方案

    [1.cmd终端连接远程mysql数据库方法] mysql -uhello -pworld   -h192.168.1.88 -P3306 -Dmysql_oa mysql -u用户名 -p密码 -h ...

  3. legend3---lavarel常用操作代码2

    legend3---lavarel常用操作代码2 一.总结 一句话总结: 对于王思cong被执法人的感悟:失意时 莫心伤,得意时 莫膨胀 1.lavarel自动事务? DB::transaction方 ...

  4. 免费版CloudFlare CDN基本设置参考

    CDN有很多,网上都有介绍,用户比较多的CloudFlare CDN大家都知道,配置起来也比较简单,合理的配置,才能提升网站的速度和网站安全.不同的网站需求配置不一样,以下是我的配置情况,仅供参考. ...

  5. Linux嵌入式学习过程(转载)

    嵌入式专业是一门实践性非常强的学科,只有多动手,多实践,多编程,多调试,多看书,多思考才能真正掌握好嵌入式开发技术.那么,如何从零开始学习嵌入式开发技术, 进入嵌入式开发大门呢,笔者根据自己的嵌入式学 ...

  6. 如何使用git cherry-pick将同一个仓库的某个分支的某些commit合并到当前分支?

    答: git cherry-pick <another-branch's commit-id>

  7. AnimationDrawable

    ①先定义一个AnimationDrawable的xml资源文件: <?xml version="1.0" encoding="utf-8"?> &l ...

  8. C之静态内存和动态内存

    静态内存: * 自动申请,自动释放* 大小固定,内存空间连续* 从栈上分配的内存叫静态内存 动态内存: * 程序员自己申请 * new/malloc* 大小取决于虚拟内存的大小,内存空间不连续* ja ...

  9. UC浏览器打开百度显示 丰臣吉秀.网址

  10. kvm管理工具Webvirtmgr安装

    虚拟机版本vmware workstation 15.5.0 pro   (也就是linux版) cat /etc/redhat-release CentOS Linux release 7.4.17 ...