一、拆分分区(SPLIT)

在已有分区上添加一个新分区。

如下图所示,将分区03拆分成03和04分区,拆分方式先锁定旧03分区的所有数据,后将旧03分区相关数据迁移到分区04,最后删除旧03上的对应分区数据;这种操作大量消耗io,造成的io日志读写是转移数据的四倍。因此在管理分区上,一般提前添加分区;例如当前03分区没有数据的情况下,我们完成04分区的添加。

添加分区步骤:

1、指定下一个分区的文件组

2、拆分分区

--添加分区
USE [PartionTest] ALTER PARTITION SCHEME [pc_PartionTest01] NEXT USED [PartionTest201412] USE [PartionTest];
ALTER PARTITION FUNCTION [pf_PartionTest01]() SPLIT RANGE('2014-12-11') 下图表示分区添加成功:

二、合并分区(Merge)

分区数据的迁移后,需要分区合并,也就是将无用分区删除,分区合并同拆分一样,会造成大量的io消耗;因此通常会将此分区数据切分出去,分区无数据则可以合并相关分区。

由于合并是将两个分区合并,因此存在是将需要合并的分区界限点往左合并还是往右合并呢?这取决于Range 方式,若Range LEFT 则 往右合并,RANG RIGHT 则往左合并。

通过以上拆分分区得出的分区4,现将分区4合并,有余Range right分区方式,因此分区4是往左合并,将合并到分区3。以下执行结果可以证明此观点。

USE [PartionTest];
ALTER PARTITION FUNCTION [pf_PartionTest01]() Merge RANGE('2014-12-11')
通过下图可以看出:只剩下分区3

四、分区切换(SWITCH PARTITION )

切换分区可以快速有效的管理数据子集。可以使用ALTER TABLE …SWITCH PARTITION ..语句。在分区移动时,只是修改相关的元数据,并未移动数据;因此切换速度非常快。

切换分区需要符合以下要求:http://msdn.microsoft.com/zh-cn/library/ms191160(v=sql.105).aspx

1、原表与目标表结构必须相同,且必须在同一个文件组中。

2、目标表或者分区必须是空的。

3、若源表存在聚集分区索引,则要求目标表也需要有同样的聚集分区索引。

4、源表的所有索引必须与源表分区对齐。

5、若目标表存在索引,约束,外键,要求源表必须与目标表相同结构的索引,约束,外键。

6、目标表和源表都不能存在复制分发。

7、分区依据列是否可为空的约束必须相同。

一般切换分区可以做如下处理:

  1. 将现有表作为分区分配到现有的已分区表。

    ALTER TABLE [dbname].[dbo].[tablename] SWITCH TO [dbname].[dbo].[staging_tablename] PARTITION source_partition_number_expression

  2. 将分区从一个已分区表切换到另外一个已分区表中。

    ALTER TABLE [dbname].[dbo].[tablename] SWITCH PARTITION source_partition_number_expression TO [dbname].[dbo].[staging_tablename] PARTITION source_partition_number_expression

  3. 将一个分区切换到现有表中。

    ALTER TABLE [dbname].[dbo].[tablename] SWITCH PARTITION source_partition_number_expression TO [dbname].[dbo].[staging_tablename]

四、$PARTITION

为任何指定的分区函数返回分区号,一组分区列值将映射到该分区号中。

[ database_name. ] $PARTITION.partition_function_name(expression)
/*返回某个值属于某个分区*/
SELECT $PARTITION.pf_PartionTest01('2014-12-26 00:00:00.000') /*查询某个分区的所有值*/
select * from [dbo].[PartionTest01]
where $PARTITION.pf_PartionTest01(salesDate)=2

(四)SQL Server分区管理的更多相关文章

  1. (一)SQL Server分区详解Partition(目录)

    一.SQL Server分区介绍 在SQL Server中,数据库的所有表和索引都视为已分区表和索引,默认这些表和索引值包含一个分区:也就是说表或索引至少包含一个分区.SQL Server中数据是按水 ...

  2. SQL SERVER分区详解(1-5)

    转自: (五)SQL Server分区自动化案例     (四)SQL Server分区管理     (三)索引分区知识详解     (二)SQL Server分区创建过程     (一)SQL Se ...

  3. (二)SQL Server分区创建过程

    虽然分区有很多好处(一)SQL Server分区详解Partition,却不能随意使用:且不说分区管理的繁琐,只是跨分区带来的负面影响就需要我们好好分析是否有必要使用分区.一般分区创建的业务特点:用于 ...

  4. sql server 分区(上)

    分区发展历程      基于表的分区功能为简化分区表的创建和维护过程提供了灵活性和更好的性能.追溯到逻辑分区表和手动分区表的功能. 二.为什么要进行分区 为了改善大型表以及具有各种访问模式的表的可伸缩 ...

  5. SQL SERVER分区视图

    借助SQL SERVER分区视图,可以对SQL中的表进行集中管理,下文将以实例的方式为您详解SQL SERVER分区视图,希望对您学习SQL数据库能有所帮助. SQL SERVER分区视图给我们提供了 ...

  6. Sql Server 分区演练 【转】

    Sql Server 分区演练 [转] 代码加注释,希望对初学者有用. USE [master]GOif exists (select * from sys.databases where name ...

  7. 人人都是 DBA(IV)SQL Server 内存管理

    SQL Server 的内存管理是一个庞大的主题,涉及特别多的概念和技术,例如常见的 Plan Cache.Buffer Pool.Memory Clerks 等.本文仅是管中窥豹,描述常见的内存管理 ...

  8. sql server 警报管理,实时监听数据库动向,运筹帷幄之中

    工作这么多年了,无论是身边的同学还是同事,发现只要搞程序员的都有一个通病---懒.懒到谁都不愿意加班,尤其是"义务"加班.即使大家都不愿意加班,但是很多时候项目赶着上线或者上线之后 ...

  9. 配置SQL Server 2008管理器

    SQl Server 配置管理器(简称为配置管理器)包含了SQL Server 2008服务.SQL Server 2008网络配置和SQL Native Client配置3个工具,供数据库管理人员做 ...

随机推荐

  1. 直播时代--IOS直播客户端SDK,美颜直播【开源】

    当前视频直播非常火爆,手机端的视频直播也非常火爆,PGC.UGC的视频直播门槛都降低了很多. 本文介绍一个:IOS 客户端直播的SDK,代码完全开源. 直播时代:让IOS普通开发者一天内做出一个RTM ...

  2. HDU 1848 Fibonacci again and again【SG函数】

    对于Nim博弈,任何奇异局势(a,b,c)都有a^b^c=0. 延伸: 任何奇异局势(a1, a2,… an)都满足 a1^a2^…^an=0 首先定义mex(minimal excludant)运算 ...

  3. Visual Studio 2013支持Xamarin的解决方案

    转自博客园[遗忘的代码] Xamarin的Visual Studio插件目前还不支持VS 2013,所以需要在安装Xamarin的VS插件时把2010和2012全选上 (由于我的电脑里只剩2013,而 ...

  4. jdbc java数据库连接 6)类路径读取——JdbcUtil的配置文件

    之前的代码中,以下代码很多时候并不是固定的: private static String url = "jdbc:mysql://localhost:3306/day1029?useUnic ...

  5. 3942: [Usaco2015 Feb]Censoring [KMP]

    3942: [Usaco2015 Feb]Censoring Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 375  Solved: 206[Subm ...

  6. textarea去掉右侧滚动条,去掉右下角拖拽

    代码: <TEXTAREA style= "overflow:hidden; resize:none; "> </TEXTAREA> 当使用背景图片的时候, ...

  7. iptables能够做什么

    前言 在这两篇博文中已经具体分析了iptable的原理和在openwrt里面的实例 http://www.cnblogs.com/tanhangbo/p/4550455.html http://www ...

  8. 杂谈 Taglib、EL、OGNL

    本篇主要是自己对 JavaWeb中 EL.OGNL.Taglib 个人理解. 因为以上内容都是在 JSP 的基础下产生的概念, 首先得说说我眼中的 JSP. 她自由的.奔放的,就像辽阔的大海,跨越任何 ...

  9. C++11笔记<一>

    目录: 1.std::share_ptr智能指针: 2.std::tr1::function模板类: 3.stringstream: 4.set/vector/map: 5.static_cast&l ...

  10. 尝试使用Memcached遇到的狗血问题

    乘着有时间,尝试下利用Memcached进行分布式缓存,其中遇到了不少问题及狗血的事情,开篇记录下,希望对您有帮助. 我之前的项目为:Asp.Net MVC4 + Nhibernate + MSSQL ...