標籤:
資料庫結構和索引的是否合理在很大程度上影響了資料庫的效能,但是隨著資料庫資訊負載的增大,對資料庫的效能也發生了很大的影響。可能我們的資料庫在一開始有著很高的效能,但是隨著資料存放區量的急速增長—例如訂單資料—資料的效能也受到了極大的影響,一個很明顯的結果就是查詢的反應會非常慢。在這個時候,除了你可以最佳化索引及查詢外,你還可以做什嗎?建立分區表(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中通過嚮導完成建立分區表的過程。當然,你也可以通過指令碼來完成這些功能。
- 在SQL Server 2008 Management Studio中選擇你想要建立分區表的對象,右鍵點擊表名選擇Storage –> Create Partition.
- 在出現的Create Partition Wizard中點擊Next按鈕進入Select a Partition Column頁面。
- 在Select a Partition Column版面設定基於哪個欄位進行資料子集劃分。在這裡我們選擇EndDate。在後邊會對EndDate設定條件來劃分資料子集。
- 在Select a Partition Function頁面輸入一個名字來作為Function的名稱。這裡我們輸入YearOrderPartitionFunction
- 下一步是給建立的資料分割配置命名。在Select a Partition Schema頁面輸入YearOrderPartition作為名稱。
- 在Map Partition頁面上我們設定分區標準。Left Boundary和Right Boundary是指符合區分標準的資料被放置到那個資料子集,對應<=和<.
- 點擊Set Boundaries來設定基於EndDate的資料子集劃分標準。
- 點擊Estimate storage來估算每個資料子集的空間大小和其資料條目。根據設定的從2001-01-01到2004-12-31為止的所有資料按年劃分的標準,我們最終得到了5個資料子集和一個用來存放最新資料的子集。這個新的資料子集對任何分區都是必須的,每個分區表中都會含有這個新的資料子集用來存放不同於資料標準劃分的所有子集的資料(在這裡就是大於2005年1月1日的訂單)。
- 接下來通過選擇以哪種方式運行(Run Immediately或者Schedule或者Script)來結束嚮導。分區表建立完成。
建立表分區完成了,接下來你可以享受表分區帶給我們的優越性了(如果你的選擇是正確的話),你還可以針對各個資料子集來進行合并、刪除、移動等。通過這些你可以很好的維護資料庫。在以後的post中我們會接下來介紹如何使用分區表。
轉載:SQL Server 2008-建立分區表(Table Partition) 轉載