標籤:blog http io ar os 使用 sp for strong
SQL Server 2005中的分區表(五):添加一個分區分類: SQL Server2009-12-04 14:33 5341人閱讀 評論(5) 收藏 舉報sql serverschemefunction2010資料庫指令碼
所謂天下大事,分久必合,合久必分,對於分區表而言也一樣。前面我們介紹過如何刪除(合并)分區表中的一個分區,下面我們介紹一下如何為分區表添加一個分區。
為分區表添加一個分區,這種情況是時常會 發生的。比如,最初在資料庫設計時,只預計了存放3年的資料,可是到了第4天怎麼辦?這樣的話,我們就可以為分區表添加一個分區,讓它把新的資料放在新的分區裡。再比如,最初設計時,一個分區用於存放一年的資料,結果在使用的時候才發現,一年的資料太多,想將一個分區中的資料分為兩個分區來存放。
遇到這種情況,就必須要為分區表添加一個分區了。
當然,我們也可以使用修改分區函數的方式來添加一個分區,但是在修改分區函數時,我們必須要注意另一個問題——資料分割配置。為什麼還要注意資料分割配置呢?我們回過頭來看一下前面是怎麼定義分區函數和資料分割配置的,如以下代碼所示:
[c-sharp] view plaincopy
- --添加分區函數
- CREATE PARTITION FUNCTION partfunSale (datetime)
- AS RANGE RIGHT FOR VALUES (‘20100101‘,‘20110101‘,‘20120101‘,‘20130101‘)
- --添加資料分割配置
- CREATE PARTITION SCHEME partschSale
- AS PARTITION partfunSale
- TO ( Sale2009, Sale2010, Sale2011, Sale2012, Sale2013)
從以上代碼中可以看出,分區函數定義了用於分區的資料邊界,而分區函數指定了符合分區邊界的資料存放在檔案組。因此,資料分割配置中指定的檔案組個數應該是比分區函數中指定的邊界數大1的。如上例中,分區函數中指定的邊界數為4,那麼在資料分割配置中指定的檔案組數就為5。
如果,我們將分區函數中的邊界數增加一個,那麼資料分割配置中的檔案組數也就要相應地增加一個。因此,我們不能簡簡單單地通過修改分區函數的方式來為分區表添加一個分區。
那麼,我們應該怎麼做呢?是不是要先為資料分割配置添加一個檔案組?
這種想法是沒有錯的,想要為分區表添加一個分區,可以通過以下兩個步驟來實現:
1、為資料分割配置指定一個可以使用的檔案組。
2、修改分區函數。
在為資料分割配置指定一個可用的檔案組時,該資料分割配置並沒有立刻使用這個檔案組,只是將檔案組先備用著,等修改了分區函數之後資料分割配置才會使用這個檔案組(不要忘記了,如果分區函數沒有變,資料分割配置中的檔案組個數就不能變)。
為資料分割配置指定一個可用的檔案組的代碼如下所示:
[c-sharp] view plaincopy
- ALTER PARTITION SCHEME partschSale
- NEXT USED [Sale2010]
其中:
1、ALTER PARTITION SCHEME意思是修改資料分割配置
2、partschSale是資料分割配置名
3、NEXT USED意思是下一個可使用的檔案組
4、[Sale2010]是檔案組名
為資料分割配置添加了下一個可使用的檔案組之後,資料分割配置並沒有立刻使用這個檔案組,此時我們可以通過查看資料分割配置的原始碼來證實。查看方法是:在SQL Server Management Studio中,選擇資料庫-->儲存-->資料分割配置,右擊資料分割配置名,在彈出的菜單中選擇“編寫資料分割配置指令碼為”-->CREATE到-->新查詢編輯器視窗,如所示:
為資料分割配置添加了下一個可使用的檔案組之後,我們就可以動手修改分區函數了,使用代碼如下所示:
[c-sharp] view plaincopy
- ALTER PARTITION FUNCTION partfunSale()
- SPLIT RANGE (‘20100101‘)
其中:
1、ALTER PARTITION FUNCTION意思是修改分區函數
2、partfunSale()為分區函數名
3、SPLIT RANGE 意思是分割界限
4、‘20100101‘ 是用於分割的界限值
當然,我們在修改分區函數前後都可以統計一下各物理分區的資料記錄情況,如以下代碼所示:
[c-sharp] view plaincopy
- --統計所有分區表中的記錄總數
- select $PARTITION.partfunSale(SaleTime) as 分區編號,count(id) as 記錄數 from Sale group by $PARTITION.partfunSale(SaleTime)
- --原來的分區函數是將2010-1-1之前的資料放在第1個分區表中,將2010-1-1至2011-1-1之間的資料放在第2個分區表中
- --現在需要將2011-1-1之前的資料都放在第1個分區表中,也就是將第1個分區表和第2個分區表中的資料合併
- --修改分區函數
- ALTER PARTITION FUNCTION partfunSale()
- SPLIT RANGE (‘20100101‘)
- --統計所有分區表中的記錄總數
- select $PARTITION.partfunSale(SaleTime) as 分區編號,count(id) as 記錄數 from Sale group by $PARTITION.partfunSale(SaleTime)
以上代碼的運行結果如所示:
從中可以看出,分區表中已經添加了一個分區,我們也可以再一次查看資料分割配置的原始碼,如所示,這個時候資料分割配置也自動添加了一個檔案組。
原創不容易,轉載請註明出處。http://blog.csdn.net/smallfools/archive/2009/12/04/4940185.aspx
SQL Server 2005中的分區表(五):添加一個分區