2009年3月16日 星期一

Partition Table for SQL 2005

應該很多人都有遇到當單一table的資料量愈來愈大時的做法

比方說:

我們可以做一個分割,便在資料庫中的多個檔案群組中儲存資料,來加速查詢效能

如果我們新增二個檔案群組(F1,F2),而假設table A 有500萬筆

我們是否可以將250萬放在F1,另250萬筆放在F2

但前端查詢程式還是一套,且都可以查到500萬筆呢???

新增一個檔案群組沒問題,而印象中也可以把table指定存放某個file group

那如果真的要達到上述做法..要怎麼做呢

將250萬拆出來沒問題,但table名稱還是要叫A

到底要怎麼做呢?

__________________________________________________________

第一步:建立資料分割函數

例:


CREATE PARTITION FUNCTION TestFn(int)
AS RANGE LEFT FOR VALUES (1,10000,20000)--->這樣就有4個partition(這樣講對嗎????)
 
1.欄位<=1
2.欄位>1 and 欄位<=10000
3.欄位>10000 and 欄位<=20000
4.欄位>20000

第二步:建立分割表

CREATE PARTITION SCHEME TestSc
AS PARTITION TestFn
TO (FG1, FG2, FG3, FG4)

這四個file group可以先建,當然也可以都只向同一個file group

不過,如果硬體許可,讓讀寫頭各別讀取,也是不錯的方法

第三步:將建立的table設定其partition

Code Snippet
CREATE TABLE PartitionTable (f1 int, f2 char(10))
ON TestSc (f1)


因此,結果就會按PartitionTable 中f1欄位值區間,分不同的partition存放


沒有留言: