[Proformace] SQL Server 2005 Data Split – SQL Server 資料表分割
[Proformace] SQL Server 2005 Data Split – SQL Server |
在某些大型資料庫的的效能運作上,Microsoft的SQL Server 提供了一個功能叫資料表分割.這個功能可以讓您將資料庫中的資料表分別置放
有些人會納悶,直接寫把規則寫在Schema不就好了,為什麼還要多一層Function ? 在這邊我用三張圖來解釋為什麼要這樣處理 根據上面的例子,如果我現在想要將進貨資料也分年來歸檔,分到不同的實體檔案來歸檔,但是剛才如果我們是把資料分割規則寫死綁定在資料表上,這樣我們就無法 如果您有寫過程式,那您一定對Function(資料庫函數)不陌生.在這邊觀念是相同的,我們可以將資 料規則抽離成一個Function,然後每一個資料表就可以撰寫一個Schema來套用到您所想要對應到的資料庫規則,這樣就可以達成資料庫規則重複利用 的型態,所以並非SQL |
首先我們先建立一個資料庫,這邊我們就替它命名為 [DataBase]吧. |
首先我們建立5個新的檔案群組,這邊我們先簡單化事件,稍後我們把要建立的ndf檔案指定在這些檔案群組上. 接著我們在建立資料群組的檔案,這邊我們建立5個ndf檔案,分別是2006Sales,2007Sales,2008Sales,2009Sales,2010Sales.顧名思義這邊我們要來分別置放不同年份的銷售資料.在這邊您可以將不同 |
這時我們可以在實體硬碟上看到我們剛剛建立的5個ndf實體檔案,每個檔案都是1MB. |
接著我們要建立資料切割的準則,也就是[Function],建立準則時就是有四個概念. 其實這部分主要就是定義四個部分,如果您有寫過程式的經驗,一定不會陌生首先就是要定義function名子(總是要知道這個Function叫甚麼名子吧)!! 下方我們建立一個名稱為[SaleDataSplit]的Function,然後我們將會以年分來分割這個資料.並且使用資料庫中的[smalldatetime] 建立完成可以在左邊的管理介面中的資料分割函數中看到我們剛剛建立起來的[SaleDataSplit]函數. |
在這次範例我們採對應到群組的方式,並且必須要對應到五個群組.因為我們剛剛用時間點來切割資料,而我們分割的時間點為2007年,2008年,2009年,2010年, |
建立完成後,我們可以在資料分割配置裡面看到一個 [ PS_SaleData ] . |
接下來我們來建立資料庫了,這邊我們利用資料庫指令來建立,這部分比較要注意的是,建立資料庫的時候,在最後我們要指定這個資料庫套用 這邊我們建立完成,可以看到我們剛剛建立的資料庫 . 接著,我要利用我自己事先建立過的一個資料庫,裡面有一個銷售資料表,我在裡面塞了快400萬筆的資料.這個資料都是存放在同一個 |
資料匯出匯入精靈在這部分我們就不再墬訴.這個畫面可以成功看到我們成功匯出與匯入了392萬筆資料. |
來到實體的ndf檔案之中,我們發現了每個ndf檔案之中被塞入了大小不等的資料了,並且也改變了實體ndf檔案的大小. |
本篇文章參考以下網站資訊,. 提升查詢效能的資料分割設計 http://msdn.microsoft.com/zh-tw/library/ms177411.aspx CREATE PARTITION FUNCTION (Transact-SQL) http://msdn.microsoft.com/zh-tw/library/ms187802(SQL.90).aspx CREATE PARTITION SCHEME (Transact-SQL) http://msdn.microsoft.com/zh-tw/library/ms179854(SQL.90).aspx The datetime data type and the smalldatetime data type are always evaluated http://support.microsoft.com/kb/917419/zh-tw |