教你建立SQL數據庫的表分區


1)新建一個數據庫

 

 

 

  2)添加幾個文件組

 

 

  3)回到“常規”選項卡,添加數據庫文件

 

 

  看到用紅色框框起來的地方沒?上一步中建立的文件組在這里就用上了。再看后面的路徑,我把每一個文件都單獨放在不同的磁盤上,而且最好都是單獨的放在不同的物理盤上,這樣會大大提高數據的性能。 點擊“確定”數據庫就算創建完成了。

4)接下來要做的是建立一個分區行數,SQL語句如下:大家學習的時候最好不要直接COPY,動手把它抄一遍也好。

以下是代碼片段:

create partition function PartFuncForExample(Datetime) 
as Range Right for Value('20000101','20010101','20020101','20030101')

  這里我准備用表中的某個時間字段作為分區的條件,當然你也可以用其他的,比如INT之類,只要好分段的都可以。

  這里注意 Right 關鍵字,意思就是當記錄的時間(在下面會被指到表的某個字段)大於等於20000101的時候,數據會被分到下一個區間,比如2000年1月1號之前的數據會被分到一區,包含2000年1月1號和之后的數據會被分到二區,以此類推。Right 也可以使用Left替代,意思同上類似。另外,上面我定義了四個分割點,這四個分割點是根據我們剛剛創建的文件組來決定的。四個分割點就能產生5個區間段,我們把每個區間段的數據存入一個文件組。

  正確執行上述語句后你可以在數據里找到以“PartFuncForExample”命名的分區函數,如下圖

 

 

  5)把分區函數建立好以后,我們再來建立分區方案。目的是為了把分區函數產生的分區映射到文件數據組里。分區函數是告訴數據庫如何分區數據,而分區方案是告訴數據庫如何把已分區的數據存到哪個文件組里。

  下面我來創建分區方案。

以下是代碼片段:

Create Partition Scheme PartSchForExample //創建一個分區方案+分區方案名稱 
As Partition PartFuncForExample//目的為了 分區函數PartFuncForExample 
To 

PRIMARY, //文件組名 
Partition1, //文件組名 
Partition2, //文件組名 
Partition3, //文件組名 
Partition4 //文件組名 
)

  正確執行后能在分區方案中看到,如下圖

 

 

  6)馬上就快要大公告成了,下面我們來建立要分區存儲的表,該表的數據理論上應該是非常非常多的,百萬級別的記錄以上而且基本上是不更新的。要不然建立分區存儲就沒多大意義了。

以下是代碼片段:

Create Table PartitionTable( 
[ID] [int] Identity(1,1) not null, 
[Name] [nvarchar](50) not null, 
[LoginDate] [DateTime] not null //用來進行分區 
) On PartSchForExample([LoginDate]) //上面提到的指定分區字段就是這里指定的了。

  執行這段SQL,沒報錯的話就大功告成了,呵呵.

  總結:

  分區存儲提高了數據庫的性能,被分區存儲的數據物理上是多個文件,但邏輯上任然是一個表,對表的任何操作都跟沒分區之前一樣。插入、刪除、查詢、更新等操作的時候,數據庫會自動為你找到對應的分區,然后執行操作。另外的話 把多個數據文件、日志文件都分別部署在不同的高性能物理盤上,也能大大提高性能.

  當然,分區存儲的好處還有很多我不知道的,歡迎高手們踴躍跟帖賜教,有錯誤的地方也歡迎踴躍拍磚!

  ---存在即是合理---

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM