亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關注微信公眾號

解惑:對SQL Server分區(qū)進行合并或刪除
2011-07-05   聽風吹雨的博客

一、準備

在SQL Server 2005版本之后就有了表分區(qū)的概念與應用,在分區(qū)操作里面有一個叫做合并分區(qū)的功能,也被稱為刪除分區(qū)。分區(qū)所處的文件組和文件是不會被刪除的,只會對數(shù)據(jù)進行轉移合并。合并分區(qū)時需要注意所帶來的IO問題。

合并分區(qū)常見情景:發(fā)現(xiàn)某個分區(qū)的數(shù)據(jù)很少,為了方便管理可以考慮合并分區(qū)。需要進行統(tǒng)計、四則運算的時候也可以考慮合并分區(qū),這種情形下并沒有對比合并與分區(qū)之間的性能,如果某位童鞋有興趣和環(huán)境的話可以提供這方面的數(shù)據(jù)。

查看分區(qū)方案的方式:在SQL Server Management Studio中,選擇數(shù)據(jù)庫-->存儲-->分區(qū)方案,右擊分區(qū)方案名,在彈出的菜單中選擇“編寫分區(qū)方案腳本為”-->CREATE到-->新查詢編輯器窗口。

二、測試

(一) 環(huán)境:使用RANGE RIGHT作為分區(qū)函數(shù)的關鍵字,它表示這個值開始是屬于右邊界的。


 

  1. RANGE RIGHT FOR VALUES ('20100101','20110101','20120101','20130101')  
文件組
分區(qū)
取值范圍
[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.   測試一:刪除分區(qū)函數(shù)的第一個值

當使用MERGE RANGE ('20100101'),合并后分區(qū)就相當于:


	
  1. RANGE RIGHT FOR VALUES ('20110101','20120101','20130101')   
文件組
分區(qū)
取值范圍
[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. 測試二:刪除分區(qū)函數(shù)的第二個值

當使用MERGE RANGE ('20110101'),合并后分區(qū)就相當于:


  1. RANGE RIGHT FOR VALUES ('20100101','20120101','20130101'
文件組
分區(qū)
取值范圍
[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.     測試三:刪除分區(qū)函數(shù)的最后一個值

當使用MERGE RANGE ('20130101'),合并后分區(qū)就相當于:


  1. RANGE RIGHT FOR VALUES ('20100101','20110101','20120101'
文件組
分區(qū)
取值范圍
[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]

(二) 環(huán)境:使用RANGE LEFT作為分區(qū)函數(shù)的關鍵字,它表示這個值開始是屬于左邊界的。


  1. RANGE LEFT FOR VALUES ('20100101','20110101','20120101','20130101')
文件組
分區(qū)
取值范圍
[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.  測試四:刪除分區(qū)函數(shù)的第一個值

當使用MERGE RANGE ('20100101'),合并后分區(qū)就相當于:


  1. RANGE LEFT FOR VALUES ('20110101','20120101','20130101'
文件組
分區(qū)
取值范圍
[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]呢?

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

2.     測試五:刪除分區(qū)函數(shù)的第二個值

當使用MERGE RANGE ('20110101'),合并后分區(qū)就相當于:


  1. RANGE LEFT FOR VALUES ('20100101','20120101','20130101'
文件組
分區(qū)
取值范圍
[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]呢?

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

3.    測試六:刪除分區(qū)函數(shù)的最后一個值

當使用MERGE RANGE ('20130101'),合并后分區(qū)就相當于:


  1. RANGE LEFT FOR VALUES ('20100101','20110101','20120101'
文件組
分區(qū)
取值范圍
[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]呢?

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

三、結論

下圖中形象的表述了邊界值(boundary_value)所處的分區(qū),符號“()”表示不包含,“[]”表示包含,一個圓圈帶叉圖標表示需要刪除這個邊界值,當使用MERGE RANGE的時候,數(shù)據(jù)庫就需要刪除一個分區(qū)的數(shù)據(jù),并把數(shù)據(jù)合并到另外一個分區(qū)中。你能從下圖看出結論嗎?

(圖1:分區(qū)函數(shù)為右邊界)

 

(圖2:分區(qū)函數(shù)為左邊界

結論:刪除的這個邊界值(boundary_value)屬于哪個分區(qū),那么就會刪除這個分區(qū),再向鄰近的分區(qū)合并。鄰近的意思是以這個邊界值為臨界點的兩個分區(qū)。圖1與圖2就很好的解釋了這個結論

原文鏈接:http://www.cnblogs.com/gaizai/archive/2010/11/05/1870071.html

熱詞搜索:

上一篇:解惑:對SQL Server分區(qū)進行合并或刪除
下一篇:淺析數(shù)據(jù)庫濫用的現(xiàn)狀 數(shù)據(jù)普遍無規(guī)劃

分享到: 收藏