none
請教partition table的實作 RRS feed

  • 問題

  •  

     

    各位好

    請教各位一種狀況的實作(我不確定算不算稱做partition table)

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

    比方說:

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

     

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

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

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

     

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

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

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

    到底要怎麼做呢

     

    還請各位指導一下,謝謝

    2008年5月8日 下午 03:38

解答

  •  

    不好意思,各位

    我查了一下自己找到答案了,就順便貼一下

     

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

    例:

    Code Snippet
    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

    第二步:建立分割表

    Code Snippet

    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存放

    不知這樣講是否正確,有誤請各位再指點一下,謝謝

     

    2008年5月9日 上午 07:38