Sql Server 分區以後增長新的分區

隨着時間的推移,你可能會但願爲已分區的表添加額外的分區(例如,能夠爲每個新年建立一個新的分區)。要增長一個新的分區,能夠使用ALTER PARTITION SCHEME和ALTER PARTITION FUNCTION命令。sql

要想爲一個既有的分區函數建立新的分區,首先必須準備一個文件組來保存新分區的數據(新的或者已有的文件組都行)。第一步是使用ALTER PARTITION SCHEME來指定下一個分區文件組。函數

ALTER PARTITION SCHEME的語法以下:佈局

  1. ALTER PARTITION SCHEME partition_scheme_name  
  2. NEXT USED [ filegroup_name ] 

表4-20詳細描述了此命令的參數。測試

表4-20 ALTER PARTITION SCHEME參數spa

參數隊列

描述ci

partition_scheme_nameit

這個參數指定了需io

要修改的分區方案名table

NEXT USED

 [filegroup_name]

NEXT USED關鍵字把下一個

文件組列入使用隊列,讓任何新的分區使用


在增長了下一個文件組的引用以後,使用ALTER PARTITION FUNCTION來建立(分割)新的分區(移除/合併分區也同樣)。ALTER PARTITION FUNCTION的語法以下:

  1. ALTER PARTITION FUNCTION partition_function_name()  
  2. {   
  3.     SPLIT RANGE ( boundary_value )  
  4.   | MERGE RANGE ( boundary_value )  

表4-21詳細描述了此命令的參數。

表4-21 ALTER PARTITION FUNCTION參數

參數

描述

partition_function_name

這個參數指定了要從中

添加或移除分區的分區函數名

SPLIT RANGE ( boundary_value ) |

MERGE RANGE ( boundary_value )

SPLIT RANGE經過定義一

個新的邊界值來建立一個

新的分區。MERGE RANGE

用於移除一個既有的分區

這個示例演示如何建立(分割)一個新的分區。第一步就是新建一個爲新分區所用的文件組。在本例中,使用PRIMARY文件組:

  1. ALTER PARTITION SCHEME HitDateRangeScheme  
  2. NEXT USED [PRIMARY] 

接着,修改分區函數來建立新的分區,定義邊界爲2009年1月1日:

  1. ALTER PARTITION FUNCTION HitDateRange ()  
  2. SPLIT RANGE ('1/1/2009') 

在新分區建立後,插入一個新行來測試新分區:

  1. INSERT Sales.WebSiteHits  
  2. (WebSitePage, HitDate)  
  3. VALUES ('Sales Page', '3/4/2009') 

使用$PARTITION來查詢表:

  1. SELECT   HitDate,  
  2. $PARTITION.HitDateRange (HitDate) Partition  
  3. FROM Sales.WebSiteHits 

這個查詢顯示新插入的行已經存儲到了新的分區中(分區號5):

  1. HitDate                    Partition  
  2. 2000-03-04 00:00:00.000    1  
  3. 2006-10-02 00:00:00.000    2  
  4. 2007-10-22 00:00:00.000    3  
  5. 2008-05-09 00:00:00.000    4  
  6. 2009-03-04 00:00:00.000    5 

解析

在這個技巧的示例中,使用ALTER PARTITION SCHEME和NEXT USED關鍵字來修改HitDateRange- Scheme。NEXT USED關鍵字把下一個文件組加入隊列,供新的分區使用。默認的PRIMARY文件組被選爲新分區的目標存儲區:

  1. ALTER PARTITION SCHEME HitDateRangeScheme  
  2. NEXT USED [PRIMARY] 

而後使用ALTER PARTITION FUNCTION和SPLIT RANGE來加入一個新的分區邊界:

  1. ALTER PARTITION FUNCTION HitDateRange ()  
  2. SPLIT RANGE ('1/1/2006') 

添加新的分區只須要使用一個新值,實際上是使用原來的邊界類型(LEFT或RIGHT)把一個既有的分區範圍分紅了2份。一次分離只能夠使用一次SPLIT RANGE--不能夠在一條語句中增長多個分區。

這個示例的分割增長了一個新的分區#5,如表4-22所示。

表4-22 新的分區佈局

位 置 #

最小的時間

最大的時間

1

最小容許的時間

1/1/2006 00:00:00

2

1/1/2006 00:00:01

1/1/2007 00:00:00

3

1/1/2007 00:00:01

1/1/2008 00:00:00

4

1/1/2008 00:00:01

1/1/2009 00:00:00

5

1/1/2009 00:00:01

最大容許的時間

向表Sales.WebSiteHits插入了新的一行,使用了分區函數。而後執行查詢來查看每行所屬的分區,並確認了新行插入到了第5個分區中。

相關文章
相關標籤/搜索