關(guān)于SQLSERVER表分區(qū)的介紹(二)
關(guān)于SQLSERVER表分區(qū)的介紹(二)
分區(qū)函數(shù)和分區(qū)方案的創(chuàng)建和使用方法
具體設(shè)計(jì)過程如下:
(1)首先創(chuàng)建一個(gè)名為partionTest的數(shù)據(jù)庫。然后分別為數(shù)據(jù)庫partionTest添加四個(gè)文件組,文件組名依次為FileGroup001~FileGroup004,
然后為該數(shù)據(jù)庫添加四個(gè)數(shù)據(jù)文件,分別命名為File001~File004,并將它們依次保存到文件組FileGroup001~FileGroup004中。
(2)以數(shù)據(jù)庫partionTest為例,右擊數(shù)據(jù)庫partionTest,從其快捷菜單中選擇【屬性】命令,打開【數(shù)據(jù)庫屬性】對(duì)話框。選擇該對(duì)話框中的
【選擇頁】列表中的【文件】選項(xiàng),然后單擊選項(xiàng)頁的【添加】按鈕,為該數(shù)據(jù)庫添加一個(gè)文件,將文件的邏輯名命名為File001,然后單擊【文件組】
列中的下拉列表,打卡【partionTest的新建文件組】對(duì)話框,在【名稱】文本框中輸入需要命名的文件組名稱,本示例使用FileGroup001,
如下圖所示:

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

注意:默認(rèn)情況下SQLSERVER2005將使用于邏輯名稱相同的名稱作為數(shù)據(jù)庫的物理主文件名。因此,如果使用一個(gè)統(tǒng)一的文件夾來保存數(shù)據(jù)庫文件,
就需要注意為不同數(shù)據(jù)庫的數(shù)據(jù)文件設(shè)定不同的邏輯名稱。
(4)做好上述準(zhǔn)備工作后,接下來就可以開始創(chuàng)建分區(qū)方案和分區(qū)函數(shù)了。首先創(chuàng)建一個(gè)分區(qū)函數(shù),所謂分區(qū)函數(shù),就是一種用于規(guī)定如何將數(shù)據(jù)劃分到不同分區(qū)的
規(guī)則函數(shù)。在【查詢編輯器】窗口中輸入下面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腳本設(shè)置相應(yīng)的分區(qū)劃分規(guī)則,其中設(shè)置了3個(gè)數(shù)值類型的分區(qū)點(diǎn),分別為100、200、300,并通過關(guān)鍵詞LEFT指明了由3個(gè)分區(qū)點(diǎn)劃分的4段分區(qū),
即(-∞,100)、[101,200]、[201,300]和[301,∞],如果使用關(guān)鍵詞RIGHT,分區(qū)將變化為[100,199]、[200,299]、[300,399]和[400,499]。單擊【執(zhí)行】
按鈕,創(chuàng)建名為PartionByInt的分區(qū)函數(shù)。
(5)切換到【對(duì)象資源管理器】中,展開數(shù)據(jù)庫partionTest\【存儲(chǔ)】\【分區(qū)函數(shù)】節(jié)點(diǎn),可以看到剛剛創(chuàng)建的分區(qū)函數(shù)PartionByInt,如下圖所示:

(6)繼續(xù)在【查詢編輯器】窗口中輸入下面的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腳本將創(chuàng)建一個(gè)名為PartionByIntScheme的分區(qū)方案。創(chuàng)建該方案時(shí),通過AS PARTITION指定了用于創(chuàng)建分區(qū)方案的分區(qū)函數(shù)(即前面創(chuàng)建的分區(qū)函數(shù)PartionByInt)。
同時(shí),通過關(guān)鍵詞TO將創(chuàng)建的分區(qū)與文件組FileGroup001~FileGroup004相綁定。單擊【執(zhí)行】按鈕,創(chuàng)建該分區(qū)方案。
(7)切換到【對(duì)象資源管理器】下,展開數(shù)據(jù)庫partionTest\【存儲(chǔ)】\【分區(qū)方案】節(jié)點(diǎn),可以看到剛剛創(chuàng)建的分區(qū)方案PartionByIntScheme,如下圖所示:

(8)接下來為了演示分區(qū)方案的使用方法,在此需要首先創(chuàng)建一個(gè)數(shù)據(jù)表,本示例創(chuàng)建一個(gè)名為testPartionTable的數(shù)據(jù)表。在【查詢編輯器】窗口中輸入下面的
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)單擊【執(zhí)行】按鈕,創(chuàng)建名為testPartionTable的數(shù)據(jù)表。需要注意的是,在這里創(chuàng)建數(shù)據(jù)表時(shí),使用了關(guān)鍵詞ON來指定需要使用的分區(qū)方案,并將字段ID指定為
分區(qū)的依據(jù)字段,即根據(jù)ID值將數(shù)據(jù)分別保存于不同的文件(即分區(qū))中。下面使用上面創(chuàng)建的分區(qū)方案,向數(shù)據(jù)表testPartionTable插入數(shù)據(jù)。在【查詢編輯器】
窗口中輸入下面的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腳本用于向數(shù)據(jù)表testPartionTable中輸入5組數(shù)據(jù),這些數(shù)據(jù)將被自動(dòng)地插入到4個(gè)不同的文件(即4個(gè)不同的分區(qū))File001~File004中。單擊【執(zhí)行】按鈕,
運(yùn)行上述T-SQL腳本,結(jié)果如下圖:

(11)如果想要查詢指定分區(qū)中包含的數(shù)據(jù)(例如查看第3分區(qū)中所包含的記錄),可以使用如下T-SQL腳本:
1 USE partionTest 2 GO 3 4 select * from testPartionTable 5 where $PARTITION.PartionByInt(ID)=3 6 GO
(12)其中系統(tǒng)函數(shù)$PARTITION,用于為指定的分區(qū)函數(shù)返回分區(qū)號(hào),例如$PARTITION.PartionByInt(ID)用于返回給ID所處的分區(qū)號(hào)。單擊【執(zhí)行】按鈕
所得查詢結(jié)果如下圖所示:

SQLSERVER的表分區(qū)介紹文章就到這里了,寫得不好的地方歡迎大家拍磚!!
浙公網(wǎng)安備 33010602011771號(hào)