簡體   English   中英

在現有范圍右分區表中添加分區左邊界

[英]add partition left boundary in an existing range right partitioned table

我的分區功能創建正確的范圍類型分區。 事實證明,在數據遷移之后,在partition_number中,有一個邊界值小於我的分區函數中聲明的邊界。 因此,例如,如果我的最小分區鍵是5,我在分區號1中找到值1,2,3和4.我需要做的是改變我的分區功能添加邊界1,2,3和4.我是怎么回事要這樣做? 分割范圍在這種情況下是否有效? sql server如何在新分區中重新排列我的數據。 它只是通過改變表來完成這項工作嗎? 我需要做些額外的事情嗎? 如果出現問題,我是否需要備份?

我想你的情況如下:你有一個最低邊界值為5的正確范圍分區,以及一個以這種方式分區的表,例如:

create partition function pf (int) as range right for values (5)
create partition scheme ps as partition pf to ([PRIMARY], [PRIMARY])
create table T (part_key int constraint PK_T primary key)
on ps (part_key)

現在,如果在表T中輸入值1,2,3,4和5並檢查每個分區中的值的分布,您將在分區1中找到1,2,3和4,在分區2中找到5 :

insert T values (1), (2), (3), (4), (5)
select part_key, $partition.pf(part_key) as partition from T

要在每個新分區中添加新目標文件組,並且 - 從最高值開始拆分分區范圍,您需要做什么才能在其自己的分區中獲取每個值

這可能看起來像:

alter partition scheme ps next used [PRIMARY]
alter partition function pf() split range (4)

alter partition scheme ps next used [PRIMARY]
alter partition function pf() split range (3)

alter partition scheme ps next used [PRIMARY]
alter partition function pf() split range (2)

現在,如果再次檢查您的值分布,您將看到所有不同的值最終都在一個單獨的分區中:

select part_key, $partition.pf(part_key) as partition from T

但是,請注意,這與數據移動一起,即具有分區鍵值1-4的所有行需要從原始分區2物理移動到其新的目標分區。 因此,如果有數百萬個這樣的行,這將花費一些時間並且會破壞您的事務日志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM