表分区操作步骤

1、设计表进行分区的方案,水平分区、垂直分区

a、水平切割将减少表的行数,这样可以将历史数据归档,减少表大小,提高访问速度。

b、垂直切割将分为主表和从表方式,将主要的列字段存放在主表中,次要的列字段存放在从表中,减少对不必要字段的访问和存放,只在需要的时候进行联表查询

2、根据业务规则确定按照日期或其他的分区原则选择分区列

3、根据选择的分区列,确定分区数,创建对应的文件组和数据文件数

最好一个分区对应一个文件组和一个数据文件,分区数据文件最好分布在不同的磁盘上,这样有利于数据库并行操作,特别是多核cpu对I/O的访问

4、创建分区函数

参见下面说明

5、创建分区架构

参见下面说明

6、创建分区表

参见下面说明

7、创建分区索引,分区聚集唯一索引

a、分区索引可以使用不同的分区架构,但必须使用相同的分区函数,存储在不同的文件组中,但是这样讲导致索引与数据表无法对齐。

b、建议尽量使用相同的分区架构,确保索引和数据表对齐,这样特别有利于滑动窗口方式的查询操作。

c、大型的分区表要有唯一聚集索引或唯一索引

唯一索引必须包含分区列,这样才能让sqlserver只访问需要的分区

表分区与分表操作的区别

  • 在sqlserver 2005之前,只能使用分表方式进行分区操作,将大表拆分成多个小表,然后通过union 方式拼接成一个视图。这种方式将给开发人员新增工作量。当需要插入更新表记录时,需要查找记录所在的数据表。
  • 在sqlserver 2005之后,微软提供表分区操作,将大表拆分成多个实际小表,大表变成逻辑表,对开发人员而言操作逻辑表与原来大表是一样的,不受影响。

创建表分区架构

CREATE PARTITION SCHEME [Sln_Partition_Tbl_IntegeralLog]
AS PARTITION [Fn_Partition_Tbl_IntegeralLog]
TO ([文件组名1], [文件组名2], [文件组名3])
GO

修改表分区架构

删除表分区架构

IF  EXISTS
(
SELECT *
FROM sys.partition_schemes WHERE name = N'Sln_Partition_Tbl_IntegeralLog'
)
DROP PARTITION SCHEME [Sln_Partition_Tbl_IntegeralLog]
GO

创建表分区函数

CREATE PARTITION FUNCTION [Fn_Partition_Tbl_IntegeralLog](datetime)
AS RANGE LEFT
FOR VALUES (N'2010-01-01T00:00:00.000', N'2011-01-01T00:00:00.000', N'2012-01-01T00:00:00.000', N'2013-01-01T00:00:00.000', N'2014-01-01T00:00:00.000')
GO

修改表分区函数

删除表分区函数

IF  EXISTS
(
SELECT *
FROM sys.partition_functions
WHERE name = N'Fn_Partition_Tbl_IntegeralLog'
)
DROP PARTITION FUNCTION [Fn_Partition_Tbl_IntegeralLog]
GO

查询表分区数据分布情况

  select  $partition.Fn_Partition_Tbl_IntegeralLog(tC_Time) [分区编号],
count(*) [分区编号],
min(tC_Time) [起始分界],
max(tC_Time) [终止分界]
from dbo.Tbl_IntegeralLog
group by $partition.Fn_Partition_Tbl_IntegeralLog(tC_Time)

创建分区表

CREATE TABLE Tbl_IntegeralLog
(
tC_Id INT is not null,
tC_Time datetime default getdate(),
PRIMARY KEY (ID)
) ON Fn_Partition_Tbl_IntegeralLog(tC_Time)
GO

查询表记录分配到哪个分区中

SELECT *, $PARTITION.Fn_Partition_Tbl_IntegeralLog(tC_Time)
FROM Tbl_IntegeralLog

查询分区2中的记录信息

select *
from Tbl_IntegeralLog
where $PARTITION.Fn_Partition_Tbl_IntegeralLog([tC_Time])= 2

查询分区函数、分区边界值、分区架构

select * from sys.partition_functions
select * from sys.partition_range_values
select * from sys.partition_schemes

根据分区字段的值查询出分区号

 SELECT $PARTITION.Fn_Partition_Tbl_IntegeralLog('2011-01-01')

以下目录视图包含数据库、表和索引级别的分区信息,以及有关单个分区函数和分区方案的信息。

获取有关单个分区函数的信息

获取有关分区函数的单个参数的信息

获取有关分区函数边界值的信息

获取有关数据库中所有分区方案的信息

获取有关单个分区方案的信息

获取有关数据库中所有分区的信息

获取有关表或索引的分区信息

sqlserver 2008表分区操作的更多相关文章

  1. C#读取Visual FoxPro(*.dbf)数据并使用SqlBulkCopy插入到SqlServer 2008 R2数据表中

    公司数据库从32位的SqlServer 2005升级到64位的SqlServer 2008 R2后,无法再像原来通过Link Server连接VFP同步数据,因此考虑用代码程序从VFP数据库中读取所需 ...

  2. SQLServer 2008以上误操作数据库恢复方法——日志尾部备份(转)

    问题: 经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了.人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题. 遇到这 ...

  3. [转]SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

    原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327 问题: 经常看到有人误删数据,或者误操作,特别是update和delete的 ...

  4. sqlserver 2008 卸载时提示 “重新启动计算机”失败

    问题:sqlserver 2008 卸载时提示 “重新启动计算机”失败 解决办法: 1.打开注册表:开始->运行: regedit 2.找到HKEY_LOCAL_MACHINE\SYSTEM\C ...

  5. 数据库降级-从sqlserver 2008 降到 2005

    前天遇到一个问题,是一个数据库是Sqlserver 2008的,而平台数据库库是2005的,需要把2008的数据库附加进来,试了很多办法,现在觉得最好的办法就是导出导入办法. 第一步 新建一个Sqls ...

  6. SQLServer 2008 R2 发布订阅配置指南

    原以为配置SQLServer 2008 R2的发布订阅很简单,实际配置后才发现过程中有问题地方一直都没搞明白,最后经过几天的查找问题和实践,终于搞定了.现将过程记录如下. SQLServer 2008 ...

  7. 使用SQLServer 2008的CDC功能实现数据变更捕获

    原文:使用SQLServer 2008的CDC功能实现数据变更捕获 最近由于工作需要,研究了一下2008 CDC功能,觉得还不错,下面整理了一下研究过程,虽然比较粗略,但是基本上能用了,如果有补充请大 ...

  8. SQLServer 2008 技术内幕——T-SQL 查询 笔记

    原文:SQLServer 2008 技术内幕--T-SQL 查询 笔记 1.SQL编程有许多独特之处,如:面向集合的思维方式.查询元素的逻辑处理顺序.三值逻辑.如果不掌握这些知识就开始用SQL编程,得 ...

  9. SQLServer 2008中SQL增强之三 Merge(在一条语句中使用

    SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)   SQL Server 2008提供了一个增强的SQL命令Merge,用法参看M ...

随机推荐

  1. Apriori算法在购物篮分析中的运用

    购物篮分析是一个很经典的数据挖掘案例,运用到了Apriori算法.下面从网上下载的一超市某月份的数据库,利用Apriori算法进行管理分析.例子使用Python+MongoDB 处理过程1 数据建模( ...

  2. Contest 20141027 总结

    这次考试主要问题出在第一题,由于考试期间没有看清题意,少看了一句 “a=A/1e9" 导致在考试结束最后5分钟发现时修改过于匆忙,改出问题了.另外,这道题同时告诉我long double 在 ...

  3. Codeforces Round #207 (Div. 2)

    A:超级大水题: 代码: #include<cstdio> #define maxn 105 using namespace std; int n,a[maxn],x,y,ans; int ...

  4. MVC自学系列之二(MVC控制器-Controllers)

      Controllers的职责 1.MVC模式中的Controllers的职责是对用户的输入做出响应,对用户的输入在实体上做一些变化.它关心的是应用的流动,处理传入的数据,并给相关的View提供数据 ...

  5. 用POLL的方式,没有跑出结果来,立此存照

    咦,这些内容,和我以前看内核时的东东,对应起来了.. SELECT,POLL,EPOLL,非阻塞,异步之类的... 但我没有调出来.回家有空了可以看看,不用再敲打代码啦... #!/usr/bin/e ...

  6. 【HDOJ】3397 Sequence operation

    线段树的应用,很不错的一道题目.结点属性包括:(1)n1:1的个数:(2)c1:连续1的最大个数:(3)c0:连续0的最大个数:(4)lc1/lc0:从区间左边开始,连续1/0的最大个数:(5)rc1 ...

  7. 基于Qt的信号分析简单应用软件的设计

    一.需求描述: 1.读取data.asc文件,分析其连续性: 2.绘制信号图像,并保存. 二.UI界面组成: 该应用的UI由以下几个控件组成: 3个PushButton:打开文件.图像保存.退出: 1 ...

  8. 搜索(剪枝优化):HDU 5113 Black And White

    Description In mathematics, the four color theorem, or the four color map theorem, states that, give ...

  9. LoadRunner的场景设置

    loadrunner场景设置的方法: 1.逐步增加用户数,分多次去运行场景.比如:第一次运行50并发,第二次运行100并发…… 2.针对同一个脚本设置多个组,使用组策略(点击Edit Schedule ...

  10. Mac 系统显示和隐藏文件的方法

    1. 代码法: 显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏Mac隐藏文件的命令:defau ...