专栏首页微卡智享SQL Server分区表(四):删除(合并)一个分区

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

今天我们在讲一下删除合并一个分区。

正文

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

第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)之后的数据。

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

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语句

CREATE PARTITION FUNCTION partfunSale (datetime)

AS RANGE RIGHT FOR VALUES ('20110101','20120101','20130101')

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

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

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

ALTER PARTITION FUNCTION partfunSale()

MERGE RANGE ('20100101')

其中:

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

2、partfunSale()为分区函数名

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

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

--统计所有分区表中的记录总数

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文件组中。

本文分享自微信公众号 - 微卡智享(VaccaeShare)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用Python围观垃圾分类是什么回事

    纸巾再湿也是干垃圾?瓜子皮再干也是湿垃圾??最近大家都被垃圾分类折磨的不行,傻傻的你是否拎得清????自2019.07.01开始,上海已率先实施垃圾分类制度,违...

    叫我龙总
  • 与其他编程语言相比,Python有啥优势?

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取...

    python学习教程
  • 大数据时代为什么要学python爬虫?

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取...

    python学习教程
  • python爬虫学习教程,批量抓取美女图片!

    python的抓取功能其实是非常强大的,当然不能浪费,呵呵。下面就与大家分享一个python写的美女图自动抓取程序吧!

    python学习教程
  • python爬虫学习:爬虫的基本原理与过程

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取...

    python学习教程
  • python爬虫教程,爬取猫眼电影 ,一网打尽好电影

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取...

    python学习教程
  • 为何人工智能(AI)首选Python?如何转行Python人工智能?

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取...

    python学习教程
  • 50行代码极速下载无版权高清图

    生活或者工作中,不管是写文章、公司 UI 交互图还是广告图等等都需要用到图片,图片的优点和重要性自不用说。

    叫我龙总
  • python如何自学?python学习技巧

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取...

    python学习教程
  • 从7个方面告诉你应该学习Python

    Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取...

    python学习教程

扫码关注云+社区

领取腾讯云代金券