程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server 2008-建立分區表(Table Partition)

SQL Server 2008-建立分區表(Table Partition)

編輯:關於SqlServer

  數據庫結構和索引的是否合理在很大程度上影響了數據庫的性能,但是隨著數據庫信息負載的增大,對數據庫的性能也發生了很大的影響。可能我們的數據庫在一開始有著很高的性能,但是隨著數據存儲量的急速增長—例如訂單數據—數據的性能也受到了極大的影響,一個很明顯的結果就是查詢的反應會非常慢。在這個時候,除了你可以優化索引及查詢外,你還可以做什麼?建立分區表(Table Partition)可以在某些場合下提高數據庫的性能,在SQL Server 2005中也可以通過SQL語句來創建表分區,但在SQL Server 2008中提供了向導形式來創建分區表。本文介紹了如何來創建分區表。

  什麼是分區表?

  分區表是把數據按某種標准劃分成區域存儲在不同的文件組中,使用分區可以快速而有效地管理和訪問數據子集,從而使大型表或索引更易於管理。合理的使用分區會很大程度上提高數據庫的性能。已分區表和已分區索引的數據劃分為分布於一個數據庫中多個文件組的單元。數據是按水平方式分區的,因此多組行映射到單個的分區。已分區表和已分區索引支持與設計和查詢標准表和索引相關的所有屬性和功能,包括約束、默認值、標識和時間戳值以及觸發器。因為分區表的本質是把符合不同標准的數據子集存儲在一個數據庫的一個或多個文件組中,通過元數據來表述數據存儲邏輯地址。

  決定是否實現分區主要取決於表當前的大小或將來的大小、如何使用表以及對表執行用戶查詢和維護操作的完善程度。通常,如果某個大型表同時滿足下列兩個條件,則可能適於進行分區:

  ·     該表包含(或將包含)以多種不同方式使用的大量數據。

  ·     不能按預期對表執行查詢或更新,或維護開銷超過了預定義的維護期。

  例如,如果對當前月份的數據主要執行 INSERT、UPDATE、DELETE 和 MERGE 操作,而對以前月份的數據主要執行 SELECT 查詢,則按月份對表進行分區可能會使表的管理工作更容易一些。如果對表的常規維護操作只針對一個數據子集,那麼此優點尤為明顯。如果該表沒有分區,那麼就需要對整個數據集執行這些操作,這樣就會消耗大量資源。例如,通過分區,可以針對具有只寫數據的單個月份執行類似索引重新生成和碎片整理的維護操作,而只讀數據仍可用於聯機訪問。

  Transact-SQL ALTER TABLE...SWITCH 語句還可以快速有效地移動數據子集。這也提供了很好的便利,讓我們可以放心的對數據表進行全面的維護。

  怎麼建立分區表?

  創建分區表分為以下幾個步驟:

  1.    創建分區函數以指定如何分區使用該函數的表。(T-SQL: CREATE PARTITION FUNCTION)

  2.    創建分區方案以指定分區函數的分區在文件組上的位置。(T-SQL: CREATE PARTITION SCHEMA)

  3.    創建使用分區方案的表。


  以下步驟演示了如何在SQL Server 2008 Management Studio中通過向導完成創建分區表的過程。當然,你也可以通過腳本來完成這些功能。

  1.    在SQL Server 2008 Management Studio中選擇你想要創建分區表的對象,右鍵點擊表名選擇Storage –> Create Partition.

  2.    在出現的Create Partition Wizard中點擊Next按鈕進入Select a Partition Column頁面。

  3.    在Select a Partition Column頁面設置基於哪個字段進行數據子集劃分。在這裡我們選擇EndDate。在後邊會對EndDate設置條件來劃分數據子集。


  4.    在Select a Partition Function頁面輸入一個名字來作為Function的名稱。這裡我們輸入YearOrderPartitionFunction

  5.    下一步是給創建的分區方案命名。在Select a Partition Schema頁面輸入YearOrderPartition作為名稱。

  6.    在Map Partition頁面上我們設置分區標准。Left Boundary和Right Boundary是指符合區分標准的數據被放置到那個數據子集,對應<=和<.

  7.    點擊Set BoundarIEs來設置基於EndDate的數據子集劃分標准。



  8.    點擊Estimate storage來估算每個數據子集的空間大小和其數據條目。根據設定的從2001-01-01到2004-12-31為止的所有數據按年劃分的標准,我們最終得到了5個數據子集和一個用來存放最新數據的子集。這個新的數據子集對任何分區都是必須的,每個分區表中都會含有這個新的數據子集用來存放不同於數據標准劃分的所有子集的數據(在這裡就是大於2005年1月1日的訂單)。

  

  9.    接下來通過選擇以哪種方式運行(Run Immediately或者Schedule或者Script)來結束向導。分區表創建完成。

  創建表分區完成了,接下來你可以享受表分區帶給我們的優越性了(如果你的選擇是正確的話),你還可以針對各個數據子集來進行合並、刪除、移動等。通過這些你可以很好的維護數據庫。在以後的post中我們會接下來介紹如何使用分區表。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved