Partition Range 的 Split 和 Merge 操作

对于分区表,在 empty partition 上进行 Partition Range 的 Split 和 Merge 操作,实际上是metadata-only change,Data 并不会移动。如果在 non-empty 的partition上进行split和merge,是十分耗时的。

Best Practice: Maintain an empty partition on both ends of the partitioned table and ensure that only empty partitions are split and merged in a sliding window scenario.

-- create parition function
CREATE PARTITION FUNCTION pf_int_Left (int)
AS
RANGE LEFT
FOR VALUES (10,20);

--create partition scheme
CREATE PARTITION SCHEME PS_int_Left
AS
PARTITION pf_int_Left
TO ([primary], [primary], [primary]);

一,Split

拆分 Partition Range,增加一个Boundary value,将一个 partition 一分为二,增加分区。在拆分Partition时,首先在Partition Scheme上指定新分区用以存储数据的文件组,其次在Partition Function上指定新的Boundary value。

1,Mark Next Used FileGroup

--Mark Next Used FileGroup
alter partition scheme PS_int_Left
Next Used [primary]

2,Split Range

--Split Range using distinct boudary value
alter partition function pf_int_Left()
split range(30)

将Primary FileGroup 标记为next Used state,新增的partition就会使用标记为next Used state的FileGroup来存储数据。

二,Merge

删除分区,通过将两个“相邻”的分区合并在一起来实现,相邻是指partition column值在逻辑上相邻,由于不需要额外的FileGroup来存储数据,所以不需要显式改变Partition Scheme。在merge range之后,partition Scheme会自动将被删除partition的FileGroup 从FileGroup List中remove。

--Merge Range using existing boundary value
alter partition function pf_int_Left()
merge range(20)

三,分区操作的最佳实践

1,当需要删除整个分区时,可以使用以下方法:先将partition的data switch out 到一个新的 staging table,然后合并分区,drop staging table。

Use SWITCH with MERGE to drop partition data: Switch out the partition and remove the partition‘s boundary value using MERGE.Use Drop TABLE to delete partition data by switching a partition out to a staging table and truncating the staging table.

2,Split 分区时,可以先将分区的数据Switch out到一个staging table中,然后将数据导入到表中

3,Merge 分区

时间: 2024-11-10 08:00:00

Partition Range 的 Split 和 Merge 操作的相关文章

opencv split和merge操作

opencv split和merge操作 分类: OpenCv2014-05-13 09:38 656人阅读 评论(1) 收藏 举报 [cpp] view plaincopyprint? #include<opencv2/opencv.hpp> #include<iostream> #include<cassert> #include<vector> using namespace cv; using namespace std; int main() {

菜鸟教程之工具使用(九)——Git如何进行分支的merge操作

今天继续我们的Git教程,Git杀手锏级的功能就是对于分支的管理,那么今天就来说说分支之间的merge操作.merge可以说是我们日常使用最多的操作之一,通常一个merge操作会包含commit.pull.push等操作.用惯了SVN的朋友可能会觉得Git操作起来很麻烦,其实Git常用的也就那么几个操作,非常的简单,很容易上手的.下面就带大家做一个完整的merge操作. 首先,merge操作是在不同的分支间进行的,如果你还不知道分支怎么创建,那么请参考--<从GIt上导出Maven项目>.当我

SqlServer中的merge操作(转载)

SqlServer中的merge操作(转载) 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有洞天,原来是另外一个sql关键字,t-sql的语法还是相当地丰富的.本篇是一篇学习笔记,没有什么新意,这里给出technet上的地址连接供大家参考权威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,这里具体的语法不去深究了,只是把几个例

SQL点滴18—SqlServer中的merge操作,相当地风骚

原文:SQL点滴18-SqlServer中的merge操作,相当地风骚 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有洞天,原来是另外一个sql关键字,t-sql的语法还是相当地丰富的.本篇是一篇学习笔记,没有什么新意,这里给出technet上的地址连接供大家参考权威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,这里具体的语

SVN分支/主干Merge操作小记

一.前言 说来惭愧,鄙人从事开发多年,使用svn已经好几个年头了,但是却仅限于update.commit.compare之类的操作,最近想到github上学习别人写的NIO源码,顺便去熟悉git的使用,但是一想到svn,我心里虚了:用了那么多年却对其一知半解,就连最基本的权限分配都没有做过,更别说进行分支拉取和合并了,何谈去get其他技能?做技术的还是要踏实一点,近一年来,我都在对之前未深入的领域进行扫盲,所以,注定svn是绕不过的坎,于是乎开始各种查资料,安装svn服务端(Virtual SV

SVN版本管理trunk及branch相关merge操作

先说说什么是branch.按照Subversion的说法,一个branch是某个development line(通常是主线也即trunk)的一个拷贝,见下图: branch存在的意义在于,在不干扰trunk的情况下,和trunk并行开发,待开发结束后合并回trunk中,在branch和trunk各自开发的过程中,他们都可以不断地提交自己的修改,从而使得每次修改在repository中都有记录. 设想以下场景,如果你的项目需要开发一个新功能,而该功能可能会修改项目中的绝大多数文件,而与此同时,你

PostgreSQL 10 build-in table partition(Range)

1.下载 rpm知识库包 操作系统版本:CentOS Linux release 7.2.1511 (Core) X64 [[email protected] home]# yum install https://download.postgresql.org/pub/repos/yum/testing/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm Preparing...                          #####

DataTable 设置primarykey 后进行 Merge操作

1.先查看概念 可以看highplayer博客 http://blog.csdn.net/highplayer/article/details/6613817 2. protected void staticStressTest(object sender, EventArgs e) { #region MyRegion if (string.IsNullOrEmpty(txt_ComputeDate_.Value)) { Page.ClientScript.RegisterClientScri

git之merge操作,删除项目相关配置文件实操

场景:项目开发初期,可能会因为各种各样的原因,导致将PC和IDEA的项目配置文件提交.中后期开发维护的时候就开始疯狂报merge错误,这里提供一种方式解决该问题. 解决方案:1.使用.gitignore描述耦合紧密的文件,从而忽略该文件. 操作步骤: a.删除远程库相关耦合文件 b.新建.gitignore文件,提交 问题1:创建.gitignore后也提交代码了,但是还是无效. 解:因为耦合文件在远程库已存在,之后再提交.gitignore,远程库不会滤掉已存在的文件.需先删除远程库配置文件,