SQL Server 2012 讓資料分割資料表更簡單了

本文將介紹如何利用 SQL Server 2012 新的圖形化介面來建立資料分割。

SQL Server 2012 對於資料庫中的資料儲存提供了建立資料分割(Partition)和壓縮(Compression)的功能,本文將針對資料分割進行簡介。

資料分割資料表是 SQL Server 2005 針對 Enterprise 和 Developer 版所提供的一種用來將大型資料表利用分割的功能,以水平方式拆分成數個分割(Partition),藉此提升資料載入的效能並保有資料集合的完整性,每個分割都是獨立的,假設您是依照年度來進行資料表分割,您就可以規劃針對今年的分割進行 INSERT、UPDATE、DELETE 等資料維護作業,今年以前的分割用來做查詢用途,配合適當的硬體組態來盡可能的提升查詢效能。

資料分割可以套用在資料表或索引,建立的步驟如下:

  1. 建立資料分割所需的的檔案群組。
  2. 建立資料分割函數(Partition Function)。
  3. 建立資料分割配置(Partition Scheme)。
  4. 使用資料分割配置建立資料表或索引。

由上述步驟看來,建立資料分割相當繁瑣,好在 SQL Server 2012 提供了精靈的方式來簡化您的工作,您只要依照下列步驟,透過圖形化介面就可以輕鬆完成資料分割:

  • 由 Object Explorer > Databases > Tables > 於您要進行資料分割的資料表(本文以 Orders 資料表為例)上按滑鼠右鍵 > Storage > Create Partition。

 

image

 

  • 於歡迎畫面中直接按 Next 繼續下一步。

 

image

 

  • 選擇資料分割的欄位,本文以 ShipRegion 為例,接著按 Next 繼續下一步。

 

image

 

  • 輸入 Partition Function 的名稱後,按 Next 繼續下一步。

 

image

 

  • 輸入 Partition Scheme 名稱後按 Next 繼續下一步。

 

image

 

  • 選擇 Range 以及 Boundary 所要對應的 FileGroup。

 

image

 

  • 您可以選擇要產生建立資料分割的 T-SQL敘述,也可以立即執行來建立資料分割,也可以以排程方式來於您想要的時間進行資料分割。

 

image

 

  • 您可於Review Summary 視窗中看到整個資料分割的彙整性資料,由下圖可見,SSMS 將會產生針對 Orders 資料表進行資料分割的 T-SQL 敘述。

 

image

 

  • 若順利產生 T-SQL 敘述,將看到如下圖的畫面,按 Close 關閉視窗。

 

image

 

  • 以下為 SSMS 所產生的 T-SQL:
   1:  USE [Northwind]
   2:  GO
   3:  BEGIN TRANSACTION
   4:  CREATE PARTITION FUNCTION [MyPartition](nvarchar(15)) AS RANGE LEFT FOR VALUES ()
   5:   
   6:   
   7:  CREATE PARTITION SCHEME [MyPartitionScheme] AS PARTITION [MyPartition] TO ([PRIMARY])
   8:   
   9:   
  10:  ALTER TABLE [dbo].[Order Details] DROP CONSTRAINT [FK_Order_Details_Orders]
  11:   
  12:   
  13:  ALTER TABLE [dbo].[Orders] DROP CONSTRAINT [PK_Orders]
  14:   
  15:   
  16:  ALTER TABLE [dbo].[Orders] ADD  CONSTRAINT [PK_Orders] PRIMARY KEY NONCLUSTERED 
  17:  (
  18:      [OrderID] ASC
  19:  )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  20:   
  21:   
  22:  SET ANSI_PADDING ON
  23:   
  24:  CREATE CLUSTERED INDEX [ClusteredIndex_on_MyPartitionScheme_634728363916468421] ON [dbo].[Orders]
  25:  (
  26:      [ShipRegion]
  27:  )WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [MyPartitionScheme]([ShipRegion])
  28:   
  29:   
  30:  DROP INDEX [ClusteredIndex_on_MyPartitionScheme_634728363916468421] ON [dbo].[Orders]
  31:   
  32:   
  33:  ALTER TABLE [dbo].[Order Details]  WITH NOCHECK ADD  CONSTRAINT [FK_Order_Details_Orders] FOREIGN KEY([OrderID])
  34:  REFERENCES [dbo].[Orders] ([OrderID])
  35:  ALTER TABLE [dbo].[Order Details] CHECK CONSTRAINT [FK_Order_Details_Orders]
  36:   
  37:   
  38:   
  39:   
  40:  COMMIT TRANSACTION
  41:   
  42:   

經過上述步驟,您可以很輕鬆的建立資料分割資料表。

 

【參考資料】