關於SQLSERVER表分區的介紹(二)


關於SQLSERVER表分區的介紹(二)

分區函數和分區方案的創建和使用方法

具體設計過程如下:

(1)首先創建一個名為partionTest的數據庫。然后分別為數據庫partionTest添加四個文件組,文件組名依次為FileGroup001~FileGroup004,

然后為該數據庫添加四個數據文件,分別命名為File001~File004,並將它們依次保存到文件組FileGroup001~FileGroup004中。

(2)以數據庫partionTest為例,右擊數據庫partionTest,從其快捷菜單中選擇【屬性】命令,打開【數據庫屬性】對話框。選擇該對話框中的

【選擇頁】列表中的【文件】選項,然后單擊選項頁的【添加】按鈕,為該數據庫添加一個文件,將文件的邏輯名命名為File001,然后單擊【文件組】

列中的下拉列表,打卡【partionTest的新建文件組】對話框,在【名稱】文本框中輸入需要命名的文件組名稱,本示例使用FileGroup001,

如下圖所示:

(3)按照上面介紹的方法創建剩余的3個文件及文件組,最終效果如下圖所示:

注意:默認情況下SQLSERVER2005將使用於邏輯名稱相同的名稱作為數據庫的物理主文件名。因此,如果使用一個統一的文件夾來保存數據庫文件,

就需要注意為不同數據庫的數據文件設定不同的邏輯名稱。

(4)做好上述准備工作后,接下來就可以開始創建分區方案和分區函數了。首先創建一個分區函數,所謂分區函數,就是一種用於規定如何將數據划分到不同分區的

規則函數。在【查詢編輯器】窗口中輸入下面T-SQL腳本:

1 USE partionTest
2 GO
3 CREATE PARTITION FUNCTION PartionByInt(int)
4 AS RANGE LEFT FOR VALUES(100,200,300)
5 GO

 

上述T-SQL腳本設置相應的分區划分規則,其中設置了3個數值類型的分區點,分別為100、200、300,並通過關鍵詞LEFT指明了由3個分區點划分的4段分區,

即(-∞,100)、[101,200]、[201,300]和[301,∞],如果使用關鍵詞RIGHT,分區將變化為[100,199]、[200,299]、[300,399]和[400,499]。單擊【執行】

按鈕,創建名為PartionByInt的分區函數。

(5)切換到【對象資源管理器】中,展開數據庫partionTest\【存儲】\【分區函數】節點,可以看到剛剛創建的分區函數PartionByInt,如下圖所示:

(6)繼續在【查詢編輯器】窗口中輸入下面的T-SQL腳本:

1 USE partionTest
2 
3 GO
4 
5 CREATE PARTITION SCHEME PartionByIntScheme
6 
7 AS PARTITION PartionByInt
8 
9 TO(FileGroup001,FileGroup002,FileGroup003,FileGroup004);

 

上述T-SQL腳本將創建一個名為PartionByIntScheme的分區方案。創建該方案時,通過AS PARTITION指定了用於創建分區方案的分區函數(即前面創建的分區函數PartionByInt)。

同時,通過關鍵詞TO將創建的分區與文件組FileGroup001~FileGroup004相綁定。單擊【執行】按鈕,創建該分區方案。

(7)切換到【對象資源管理器】下,展開數據庫partionTest\【存儲】\【分區方案】節點,可以看到剛剛創建的分區方案PartionByIntScheme,如下圖所示:

(8)接下來為了演示分區方案的使用方法,在此需要首先創建一個數據表,本示例創建一個名為testPartionTable的數據表。在【查詢編輯器】窗口中輸入下面的

T-SQL腳本:

1 USE partionTest
2 GO
3 CREATE TABLE testPartionTable
4 (ID INT NOT NULL,
5  ItemNo CHAR(20),
6  ItemName CHAR(40)
7 )ON PartionByIntScheme(ID);

(9)單擊【執行】按鈕,創建名為testPartionTable的數據表。需要注意的是,在這里創建數據表時,使用了關鍵詞ON來指定需要使用的分區方案,並將字段ID指定為

分區的依據字段,即根據ID值將數據分別保存於不同的文件(即分區)中。下面使用上面創建的分區方案,向數據表testPartionTable插入數據。在【查詢編輯器】

窗口中輸入下面的T-SQL腳本:

 1 USE partionTest
 2 GO
 3 
 4 declare @count int 
 5 set @count=-25
 6 while @count<=100
 7 begin
 8 insert into testPartionTable select 
 9 @count,'ITEM'+convert(varchar(6),@count),'>0 and <100'
10 set @count=@count+1
11 end 
12 
13 set @count=101
14 while @count<=200
15 begin
16 insert into testPartionTable select 
17 @count,'ITEM'+convert(varchar(6),@count),'>100 and <200'
18 set @count=@count+1
19 end
20 
21 set @count=201
22 while @count<=300
23 begin
24 insert into testPartionTable select 
25 @count,'ITEM'+convert(varchar(6),@count),'>200 and <300'
26 set @count=@count+1
27 end
28 
29 set @count=301
30 while @count<=400
31 begin
32 insert into testPartionTable select
33 @count,'ITEM'+convert(varchar(6),@count),'>300 and <400'
34 set @count=@count+1
35 end
36 set @count=401
37 while @count<=500
38 begin
39 insert into testPartionTable select 
40 @count,'ITEM'+convert(varchar(6),@count),'>400 and <500'
41 set @count=@count+1
42 end
43 
44 select * from testPartionTable
45 GO

(10)上述T-SQL腳本用於向數據表testPartionTable中輸入5組數據,這些數據將被自動地插入到4個不同的文件(即4個不同的分區)File001~File004中。單擊【執行】按鈕,

運行上述T-SQL腳本,結果如下圖:

(11)如果想要查詢指定分區中包含的數據(例如查看第3分區中所包含的記錄),可以使用如下T-SQL腳本:

1 USE partionTest
2 GO
3 
4 select  * from  testPartionTable 
5 where $PARTITION.PartionByInt(ID)=3
6 GO

(12)其中系統函數$PARTITION,用於為指定的分區函數返回分區號,例如$PARTITION.PartionByInt(ID)用於返回給ID所處的分區號。單擊【執行】按鈕

所得查詢結果如下圖所示:

 

 

SQLSERVER的表分區介紹文章就到這里了,寫得不好的地方歡迎大家拍磚!!

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM