sqlserver 2008表分区操作
表分区操作步骤
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表分区操作的更多相关文章
- C#读取Visual FoxPro(*.dbf)数据并使用SqlBulkCopy插入到SqlServer 2008 R2数据表中
公司数据库从32位的SqlServer 2005升级到64位的SqlServer 2008 R2后,无法再像原来通过Link Server连接VFP同步数据,因此考虑用代码程序从VFP数据库中读取所需 ...
- SQLServer 2008以上误操作数据库恢复方法——日志尾部备份(转)
问题: 经常看到有人误删数据,或者误操作,特别是update和delete的时候没有加where,然后就喊爹喊娘了.人非圣贤孰能无过,做错可以理解,但不能纵容,这个以后再说,现在先来解决问题. 遇到这 ...
- [转]SQLServer 2008以上误操作数据库恢复方法——日志尾部备份
原文出处:http://blog.csdn.net/dba_huangzj/article/details/8491327 问题: 经常看到有人误删数据,或者误操作,特别是update和delete的 ...
- sqlserver 2008 卸载时提示 “重新启动计算机”失败
问题:sqlserver 2008 卸载时提示 “重新启动计算机”失败 解决办法: 1.打开注册表:开始->运行: regedit 2.找到HKEY_LOCAL_MACHINE\SYSTEM\C ...
- 数据库降级-从sqlserver 2008 降到 2005
前天遇到一个问题,是一个数据库是Sqlserver 2008的,而平台数据库库是2005的,需要把2008的数据库附加进来,试了很多办法,现在觉得最好的办法就是导出导入办法. 第一步 新建一个Sqls ...
- SQLServer 2008 R2 发布订阅配置指南
原以为配置SQLServer 2008 R2的发布订阅很简单,实际配置后才发现过程中有问题地方一直都没搞明白,最后经过几天的查找问题和实践,终于搞定了.现将过程记录如下. SQLServer 2008 ...
- 使用SQLServer 2008的CDC功能实现数据变更捕获
原文:使用SQLServer 2008的CDC功能实现数据变更捕获 最近由于工作需要,研究了一下2008 CDC功能,觉得还不错,下面整理了一下研究过程,虽然比较粗略,但是基本上能用了,如果有补充请大 ...
- SQLServer 2008 技术内幕——T-SQL 查询 笔记
原文:SQLServer 2008 技术内幕--T-SQL 查询 笔记 1.SQL编程有许多独特之处,如:面向集合的思维方式.查询元素的逻辑处理顺序.三值逻辑.如果不掌握这些知识就开始用SQL编程,得 ...
- SQLServer 2008中SQL增强之三 Merge(在一条语句中使用
SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete) SQL Server 2008提供了一个增强的SQL命令Merge,用法参看M ...
随机推荐
- Coursera《machine learning》--(14)数据降维
本笔记为Coursera在线课程<Machine Learning>中的数据降维章节的笔记. 十四.降维 (Dimensionality Reduction) 14.1 动机一:数据压缩 ...
- 写的一个Makefile
#========================================================================= # # MAKE FILE FOR ROCKY # ...
- [BZOJ 2178] 圆的面积并 【Simpson积分】
题目链接:BZOJ - 2178 题目分析 用Simpson积分,将圆按照 x 坐标分成连续的一些段,分别用 Simpson 求. 注意:1)Eps要设成 1e-13 2)要去掉被其他圆包含的圆. ...
- 【Maven】解决maven打jar包报错 source 1.3 中不支持注释 (请使用 -sour
问题:maven在进行打包时,报 '请使用-source 5 或者更高版本以启用XX'的信息并导致打包失败. 原因:maven默认的编译插件的java版本较低,导致其不支持例如泛型,注解等用法. 解决 ...
- Hibernate 缓存 关于注解方式
要引入 import org.hibernate.annotations.Cache; 在类前面添加: @Cache(usage= CacheConcurrencyStrategy.NONSTRICT ...
- JavaWeb 文件上传 commons_fileupload方式
import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadExcept ...
- Spring MVC 解读——@Autowired(转)
转自:http://my.oschina.net/HeliosFly/blog/203902 Spring MVC 解读——@Autowired 一.@Autowired 作为一个Spring开发者对 ...
- 用SharedPreferences保存List(Map(String, String))数据
原因: SharedPreferences没有保存数组的方法,但是有时候为了保存一个数组而进行序列化,或者动用sqlite都是有点杀猪焉用牛刀的感觉,所以就自己动手改进一下吧. 解决方案: 采用的方式 ...
- 【POJ】2001 Shortest Prefixes
字典树. #include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 26 typed ...
- 服务器RAID配置全程与RAID基础知识
服务器RAID配置全程 一.RAID介绍 RAID是Redundent Array of Inexpensive Disks的缩写,直译为“廉价冗余磁盘阵列”,也简称为“磁盘阵列”.后来RAID中的字 ...