1. 程式人生 > >SQL Server 合併(刪除)分割槽解惑

SQL Server 合併(刪除)分割槽解惑

一、準備

SQL Server 2005版本之後就有了表分割槽的概念與應用,在分割槽操作裡面有一個叫做合併分割槽的功能,也被稱為刪除分割槽。分割槽所處的檔案組和檔案是不會被刪除的,只會對資料進行轉移合併。合併分割槽時需要注意所帶來的IO問題。

合併分割槽常見情景:發現某個分割槽的資料很少,為了方便管理可以考慮合併分割槽。需要進行統計、四則運算的時候也可以考慮合併分割槽,這種情形下並沒有對比合並與分割槽之間的效能,如果某位童鞋有興趣和環境的話可以提供這方面的資料。

檢視分割槽方案的方式:在SQL Server Management Studio中,選擇資料庫-->儲存-->分割槽方案,右擊分割槽方案名,在彈出的選單中選擇“編寫分割槽方案指令碼為”-->CREATE

-->新查詢編輯器視窗。

二、測試

(一)環境:使用RANGE RIGHT作為分割槽函式的關鍵字,它表示這個值開始是屬於右邊界的。

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

檔案組

分割槽

取值範圍

[FG1]

1

[過去某年, 2010/01/01)

[FG2]

2

[2010/01/01, 2011/01/01)

[FG3]

3

[2011/01/01, 2012/01/01)

[FG4]

4

[2012/01/01, 2013/01/01)

[PRIMARY]

5

[2013/01/01,未來某年)

1.測試一:刪除分割槽函式的第一個值

當使用MERGE RANGE ('20100101'),合併後分區就相當於:

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

檔案組

分割槽

取值範圍

[FG?]

1

[過去某年, 2011/01/01)

[FG3]

2

[2011/01/01, 2012/01/01)

[FG4]

3

[2012/01/01, 2013/01/01)

[PRIMARY]

4

[2013/01/01,未來某年)

問題:是[FG1]合併到[FG2],還是[FG2]合併到[FG1]呢?

測試結果:[FG2]合併到[FG1]

2.測試二:刪除分割槽函式的第二個值

當使用MERGE RANGE ('20110101'),合併後分區就相當於:

RANGE RIGHT FOR VALUES ('20100101','20120101','20130101')

檔案組

分割槽

取值範圍

[FG1]

1

[過去某年, 2010/01/01)

[FG?]

2

[2010/01/01, 2012/01/01)

[FG4]

3

[2012/01/01, 2013/01/01)

[PRIMARY]

4

[2013/01/01,未來某年)

問題:是[FG2]合併到[FG3],還是[FG3]合併到[FG2]呢?

測試結果:[FG3]合併到[FG2]

3.測試三:刪除分割槽函式的最後一個值

當使用MERGE RANGE ('20130101'),合併後分區就相當於:

RANGE RIGHT FOR VALUES ('20100101','20110101','20120101')

檔案組

分割槽

取值範圍

[FG1]

1

[過去某年, 2010/01/01)

[FG2]

2

[2010/01/01, 2011/01/01)

[FG3]

3

[2011/01/01, 2012/01/01)

[?]

4

[2012/01/01,未來某年)

問題:是[FG4]合併到[PRIMARY],還是[PRIMARY]合併到[FG4]呢?

測試結果:[PRIMARY]合併到[FG4]

(二)環境:使用RANGE LEFT作為分割槽函式的關鍵字,它表示這個值開始是屬於左邊界的。

RANGE LEFT FOR VALUES ('20100101',<