前言:

過去,因緣際會下,參加微軟MVP SKY開的資料庫相關課程,從課程中聽到關鍵字
"資料表分割"(Partition table),對此相當有興趣。課後Sky也大方的分享有關資料分割

相關知識與經驗。

最近因為專案需求,需要處理大量資料,雖然已經建立索引(Index),但在讀取資料時,
需要花費些許時間。為了避免專案上線後,可能面臨更多更大量資料導致系統運作速度
緩慢,必須採取一些策略進行改善。

因此,我就開始嘗試資料表分割這個功能。

藉由一些教學文章,得知必須先建立檔案後,才能進行資料表分割。

方法:

建立檔案群組與檔案:

Step.1  右鍵點選資料庫,選擇屬性。
             Right-click the database and select Properties




Step.2 選擇 "檔案" 屬性,點選下方 "加入"。
           Select File and click Add




Step.3 輸入"邏輯名稱"。
           Enter the logic name




Step 4.選擇"檔案群組",點選"<新增檔案群組..."。
           Selecy filegroup dorpdownlist, and then select add new filegroup.



Step 5.輸入檔案群組名稱。
            Enter filegroup name



Step 6.點選"確定",完成。
           Click ok, and then click finish.




建立資料分割1 ( using datetime ):

Step.1 右鍵點選資料表,選擇 "儲存體 > 建立資料分割"




Step.2 點選"下一步"




Step.3 選擇資料分割的欄位。 若選擇類行為datetime,後續"設定界線"部分可以選擇日期;
           其他類型則不能選擇"設定界線"。




Step.4 輸入"新的資料分割函數"名稱。



Step.5 輸入"資料備分割配置"名稱



Step.6 選擇範圍為左界線與右界線。依據需求設定下方"檔案群組"與"界線值"。
           因為我們選擇分割資料類行為datatime,因此我們可以藉由"設定界線"按鈕選擇日期。



Step.7 選擇日期界線。



Step.8 輸入完成後,確認最後一列有選擇檔案群組,點選估計儲存體可以觀看需要空間
           與可用空間。點選下一步。



Step.9 選擇建立模式,有建立指令碼、立即執行與排程。
           我們選擇建立指令碼,點選完成。




Step.10 我們選擇產生指令碼方式,即可在SQL Server Management Studio上看到完整Script。






建立資料分割2 ( using int or string):

Step.1 右鍵點選資料表,選擇 "儲存體 > 建立資料分割"




Step.2 點選"下一步"




Step.3 選擇資料分割的欄位。



 Step.4 輸入"新的資料分割函數"名稱。



Step.5 輸入"資料備分割配置"名稱



Step.6 選擇範圍為左界線與右界線。依據需求設定下方"檔案群組"與"界線值"。
           因為我們選擇分割資料類型為int,因此我們不可以使用"設定界線"按鈕。



Step.7 選擇建立模式,有建立指令碼、立即執行與排程。
           點選下一步。



Step.8 點選完成。



Step.9 執行中


Step.10 執行完成



Step.11 右鍵點選資料表,選擇屬性。



Step.12 在儲存體的部分,可以看到"資料分割"相關內容。



執行結果:

經過測試:
原先在沒有執行資料分割的資料表,執行前後時間差約6-7秒鐘,優化執行速度。
反應時間從原來11秒鐘,降至3秒鐘。






參考資料:

1.建立分割區資料表及索引


--
謝謝!