SQL Server 2005中的分区表(四):删除(合并)一个分区

在前面我们介绍过如何创建和使用一个分区表,并举了一个例子,将不 同年份的数据放在不同的物理分区表里。具体的分区方式为:

    第1个小表:2010-1-1以前的数据(不包含2010-1-1)。

    第2个小表:2010-1-1(包含2010-1-1)到2010-12-31之间的数据。

    第3个小表:2011-1-1(包含2011-1-1)到2011-12-31之间的数据。

    第4个小表:2012-1-1(包含2012-1-1)到2012-12-31之间的数据。

    第5个小表:2013-1-1(包含2013-1-1)之后的数据。

    分区函数的代码如下所示:

[c-sharp] view plaincopyprint?
  1. CREATE PARTITION FUNCTION partfunSale (datetime)  AS RANGE RIGHT FOR VALUES ('20100101','20110101','20120101','20130101')    

CREATE PARTITION FUNCTION partfunSale (datetime) AS RANGE RIGHT FOR VALUES ('20100101','20110101','20120101','20130101')  

 

 

    假设我们在创建分区表之后发现,2010年以前的数据并不多,完全可以将它们与2010年的数据进行合并,放在同一个分区里,也就是说,具体的分区方式改为:

 

    第1个小表:2011-1-1以前的数据(不包含2011-1-1)。

    第2个小表:2011-1-1(包含2011-1-1)到2011-12-31之间的数据。

    第3个小表:2012-1-1(包含2012-1-1)到2012-12-31之间的数据。

    第4个小表:2013-1-1(包含2013-1-1)之后的数据。

 

 

    由于上面的需求更改了数据分区的条件,因此,我们必须要修改分区函数,因为分区函数的作用就是要来告诉SQL Server怎么存放数据的。只要分区函数修改了,SQL Server会自动将数据重新分配,按照新的分区函数指定的方式来存储数据。

    先假设我们还没有创建过分区表,要满足上面的条件,我们必须要写出如下代码的创建分区函数的SQL语句

[c-sharp] view plaincopyprint?
  1. CREATE PARTITION FUNCTION partfunSale (datetime)    
  2. AS RANGE RIGHT FOR VALUES ('20110101','20120101','20130101')   

CREATE PARTITION FUNCTION partfunSale (datetime) AS RANGE RIGHT FOR VALUES ('20110101','20120101','20130101')  

 

    比较一个新的分区函数和老的分区函数,看看他们有什么区别?

    的确,我们很容易就可以发现,老的分区函数里多了一个分界值——也就是'20100101'。那么,修改老的分区函数,事实上就是将这分界值删除。简单一点说,删除(合并)一个分区,事实上就是在分区函数中将多余的分界值删除。

 

    删除分区函数中的分界值,也就是修改分区函数的方法如下所示:

[c-sharp] view plaincopyprint?
  1. ALTER PARTITION FUNCTION partfunSale()  
  2.     MERGE RANGE ('20100101')  

ALTER PARTITION FUNCTION partfunSale() MERGE RANGE ('20100101') 

 

    其中:

    1、ALTER PARTITION FUNCTION 意思是修改分区函数

    2、partfunSale()为分区函数名

    3、MERGE RANGE意思是合并界限。事实上,合并界限和删除分界值是一个意思。

 

    我们可以在修改分区函数时先统计一下各物理分区中的记录总数,在修改分区之后,再统计一下各物理分区中的记录总数,看一下修改分区函数后的数据变化情况,代码如下所示:

[c-sharp] view plaincopyprint?
  1. --统计所有分区表中的记录总数      
  2. select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)  
  3. --原来的分区函数是将2010-1-1之前的数据放在第1个分区表中,将2010-1-1至2011-1-1之间的数据放在第2个分区表中  
  4. --现在需要将2011-1-1之前的数据都放在第1个分区表中,也就是将第1个分区表和第2个分区表中的数据合并  
  5. --修改分区函数  
  6. ALTER PARTITION FUNCTION partfunSale()  
  7.     MERGE RANGE ('20100101')  
  8. --统计所有分区表中的记录总数      
  9. select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime)  

--统计所有分区表中的记录总数 select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime) --原来的分区函数是将2010-1-1之前的数据放在第1个分区表中,将2010-1-1至2011-1-1之间的数据放在第2个分区表中 --现在需要将2011-1-1之前的数据都放在第1个分区表中,也就是将第1个分区表和第2个分区表中的数据合并 --修改分区函数 ALTER PARTITION FUNCTION partfunSale() MERGE RANGE ('20100101') --统计所有分区表中的记录总数 select $PARTITION.partfunSale(SaleTime) as 分区编号,count(id) as 记录数 from Sale group by $PARTITION.partfunSale(SaleTime) 

 

    运行结果如下图所示:

 

    现在还有一个问题,就是通过修改分区函数合并数据之后,数据都存放在哪里了?在修改之前,数据分别存放在文件组Sale2009和Sale2010中,修改之后,数据放到哪里去了呢?

    事实上,在修改分区函数之后,SQL Server也会自动修改分区方案,将处于两个物理分区中的数据放在同一个物理分区里了。可以通过查看分区方案的方式来查看数据具体的存放位置。

    查看分区方案的方式为:在SQL Server Management Studio中,选择数据库-->存储-->分区方案,右击分区方案名,在弹出的菜单中选择“编写分区方案脚本为”-->CREATE到-->新查询编辑器窗口

    然后在新查询编辑器窗口可以看到下图代码。

    从上图中可以看出,分区方案将原来Sale2010文件组中的数据合并到了Sale2009文件组中。

 

 

原创不容易,转载请注明出处。http://blog.csdn.net/smallfools/archive/2009/12/04/4937878.aspx

相关链接:

SQL Server 2005中的分区表(一):什么是分区表?为什么要用分区表?如何创建分区表?

SQL Server 2005中的分区表(二):如何添加、查询、修改分区表中的数据

SQL Server 2005中的分区表(三):将普通表转换成分区表 

SQL Server 2005中的分区表(四):删除(合并)一个分区

SQL Server 2005中的分区表(五):添加一个分区

SQL Server 2005中的分区表(六):将已分区表转换成普通表

转载于:https://www.cnblogs.com/alianhot/archive/2012/03/21/2409243.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/576546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

畅通您的iOS开发之路

随着大家对苹果产品的趋之若鹜,iphone与ipad软件开发的前景也相当广阔。然而,目前精通iOS开发的专业人才却是凤毛麟角。因此,安博中 程在2012年推出重磅课程——“iPhone与iPad开发实战之路——精通iOS开发”高级培训班,为想从事i…

tool vmmap 配置符号文件 symbolic file

转载于:https://www.cnblogs.com/titer1/archive/2012/03/21/2410316.html

使用简单的5个步骤设置 Web服务器集群

通过在多个处理器之间分担工作负载并采用多种软件恢复技术,能够提供高度可用的环境并提高环境的总体 RAS(可靠性、可用性和可服务性)。可以得到的好处包括:更快地从意外中断中恢复运行,以及将意外中断对终端用户的影响…

浅谈HotSpot逃逸分析

JIT 即时编译(Just-in-time Compilation,JIT)是一种通过在运行时将字节码翻译为机器码,从而改善字节码编译语言性能的技术。在HotSpot实现中有多种选择:C1、C2和C1C2,分别对应client、server和分层编译。 …

pku 1611 The Suspects 并查集的应用

http://poj.org/problem?id1611 思路&#xff1a;统计出和0能够联系在一起的点&#xff0c;然后输出其个数 View Code #include <cstdio>#include <iostream>#define maxn 30004using namespace std;int f[maxn],num[maxn];//num记录与0有联系的个数int n,m;int …

ElasticSearch 聚合查询

价格总和&#xff1a; 1,使用aggs 2,自己起个名字price_of_sum 3,求和sum 4&#xff0c;filed要求和的字段 GET /lib5/items/_search {"aggs": {"price_of_sum": {"sum": {"field": "price"}}} }聚合查询结果&#x…

hdu Candy Sharing Game

http://acm.hdu.edu.cn/showproblem.php?pid1034 模拟题 View Code 1 #include<iostream> 2 using namespace std; 3 int a[100000]; 4 int b[100000];//a的一半 5 int n; 6 int main() 7 { 8 while(cin>>n && n) 9 {10 int i;11 …

对DataTable的一些解释

最经做导入导出Excel时&#xff0c;经常操作DataTable&#xff0c;DataSet&#xff0c;就按自己的需求对他们的一些常用的东西进行了一下总结。 一、DataTable简介 (1)构造函数 DataTable() 不带参数初始化DataTable 类的新实例。 DataTable(string …

Doc2Vec训练相似文章识别模型

一、需求描述 由于在平台上发布的文章是来源于不同渠道和作者的&#xff0c;发布的文章也存在一定程度上的抄袭或者太相似。为了避免对用户体验造成影响&#xff0c;避免不必要的文章费用支出&#xff0c;需要识别出哪些文章是相似的。数据源是若干文章&#xff08;中文&#x…

实时重复文章识别——SimHash

一、背景介绍 在前边的文章中&#xff0c;我们采用的是用google的Doc2Vec模型来识别重复文章的&#xff0c;从线上运行的效果来看&#xff0c;它的准确率是比较高的。当然&#xff0c;这是建立在把所有的文章都当做训练数据来训练Doc2Vec模型的基础上的&#xff0c;它推断出一篇…

深入理解simhash原理

一、LSH 介绍 LSH(Locality sensitive hashing)是局部敏感性hashing&#xff0c;它与传统的hash是不同的。传统hash的目的是希望得到O&#xff08;1&#xff09;的查找性能&#xff0c;将原始数据映射到相应的桶内。 LSH的基本思想是将空间中原始数据相邻的2个数据点通过映…

IntelliJ IDEA tomcat配置

1&#xff0c;首先安装好 IntelliJ IDEA 开发工具 2&#xff0c;右上角这里有个 Edit Configurations 3,添加模板 选择本地安装的tomcat 和 选择jdk 4&#xff0c;添加tomcat 这里tomcat就安装好了

Think in Java之斐波那契数列

斐波纳契数列&#xff08;Fibonacci Sequence&#xff09;&#xff0c;又称黄金分割数列。 指的是这样一个数列&#xff1a;1、1、2、3、5、8、13、21、……这个数列从第三项开始&#xff0c;每一项都等于前两项之和。 在数学上&#xff0c;斐波纳契数列以如下被以递归的方法定…

《论道HTML5》内容技术分享活动

HTML5小组的第12次活动&#xff0c;本期沙龙围绕5月出版的《论道HTML5》重点章节内容展开&#xff0c;由我和另外一位作者秀野堂主现场分享。欢迎大家参加&#xff0c;下面是活动的详细信息。活动介绍&#xff1a;时间&#xff1a;2012年04月21日 13:30-18:00地址&#xff1a;东…

基于SpringBoot实现一个可扩展的事件总线

基于SpringBoot实现一个可扩展的事件总线 前言 在日常开发中&#xff0c;我们经常会用到事件总线&#xff0c;SpringBoot通过事件多播器的形式为我们提供了一个事件总线&#xff0c;但是在开发中我们经常会用到其他的实现&#xff0c;比如Guava、Disruptor的。我们将基于Spri…

大数据技术之 Kafka (第 1 章 Kafka 概述)

第 1 章 Kafka 概述 1.1 定义 Kafka 是一个分布式的基于发布/订阅模式的消息队列&#xff08;Message Queue&#xff09;&#xff0c;主要应用于大数据实时处理领域。 1.2 消息队列 1.2.1 传统消息队列的应用场景 MQ传统应用场景之异步处理 使用消息队列的好处 1&a…

那些你无比崇拜的厉害人,是如何建构知识体系的

那些你无比崇拜的厉害人&#xff0c;是如何建构知识体系的&#xff1f; 2018-04-04 六合同风 文 | Lachel 高效思维达人&#xff0c;知识管理专家&#xff0c;深度思考践行者&#xff0c;领英、36氪特约作家 来源 | L先生说&#xff08;ID&#xff1a;lxianshengmiao&#x…

大数据技术之 Kafka (第 2 章 Kafka快速入门)

第 2 章 Kafka 快速入门 下载安装kafka集群 1.需要jdk 2.需要zookeeper&#xff0c;这个东西在最新版的Kafka中内置。 3.下载Kafka安装包 &#xff08;下载官网地址&#xff1a;Apache Kafka&#xff09; 一&#xff0c;下载Kafka安装包 二&#xff0c;Kafka安装包上传li…

使用ICSharpCode.TextEditor制作一个语法高亮显示的XML编辑器

本文转载&#xff1a;http://www.cnblogs.com/lefay/archive/2010/07/25/1784919.html转载于:https://www.cnblogs.com/51net/archive/2012/04/21/2462431.html