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 ...
随机推荐
- Entity Framework 实践系列 —— 搞好关系 - 两情相悦(双向一对一)【转载】
Entity Framework 实践系列 —— 搞好关系 - 两情相悦(双向一对一) 自从搞好了单向一对一关系,装满代码的心中塞进了挥之不去的情丝 —— 单相思.谁都知道音乐世界离不开情感,可谁又知 ...
- iOS:等待控件
定义: @interface ViewController () { UIActivityIndicatorView *testActivityIndicator; } 实例化,开始旋转: -(voi ...
- Octopress 之 Mac 版环境配置
前提条件: 1.安装了 Git2.用 rbenv 或 RVM 安装了 Ruby 1.9.3 以上版本3.安装了 ExecJS 的一种支持 JavaScript 运行环境 一.安装 Octopress ...
- NEURAL NETWORKS, PART 3: THE NETWORK
NEURAL NETWORKS, PART 3: THE NETWORK We have learned about individual neurons in the previous sectio ...
- Delphi实现HTMLWebBrowser实现HTML界面
HTML的界面有以下特点:图文混排,格式灵活,可以包含Flash.声音和视频等,实现图文声像的多媒体界面,而且易于建立和维护.另外,HTML的显示环境一般机器上都具备,通常不需要安装额外的软件.当然, ...
- Java Random随机种子
第一种情况 Random rand = new Random(47); for(int i=0;i<10;i++) System.out.println(rand.nextInt(100)); ...
- 《STL源码剖析》chapter2空间配置器allocator
为什么不说allocator是内存配置器而说是空间配置器,因为空间不一定是内存,也可以是磁盘或其他辅助介质.是的,你可以写一个allocator,直接向硬盘取空间.sgi stl提供的配置器,配置的对 ...
- 【HDOJ】1728 逃离迷宫
题目大坑,注意行列顺序式反的,另外注意起点和终点相同. #include <iostream> #include <cstdio> #include <cstring&g ...
- C++ Prime:指针
指针与引用的区别:1.指针本身就是一个对象,允许对指针赋值和拷贝,而且在指针的生命周期内它可以先后指向几个不同的对象:其二:指针无需在定义时赋值.指针在块作用域内定义如果没有被初始化,也将拥有一个不确 ...
- (转载)javascript客户端生成MD5值的函数代码
(转载)http://www.jb51.net/article/26223.htm 用js实现的客户端即可实现md5值的代码,一般情况下都是后台语言才有的,客户端也有了,方便有需要的朋友了. 测试代码 ...