設計資料分割來管理資料的子集

對資料表或索引進行資料分割,就可以下列方式使用 Transact-SQL ALTER TABLE...SWITCH 陳述式快速有效地移動資料的子集:

  • 將資料表做為資料分割,加入現有的資料分割資料表。
  • 從一個資料分割資料表切換資料分割到另一個。
  • 移除資料分割形成單一的資料表。

當您想要定期將資料加入資料分割資料表,並從相同的資料分割資料表移除舊資料,這些狀況就會很有用。此項作業可在各種狀況中處理大量或小量的資料。如果您要加入的新資料必須載入、刪除或轉換,在將它加入為資料分割之前,就可以視為分開的實體。舊資料可以封存或放入資料倉儲。無論收集多大或多小,都可以快速而有效率地傳送,因為資料並非像 INSERT INTO SELECT FROM 陳述式一樣實體移動。只是將儲存位置的中繼資料從一個資料分割變更到另一個。

範例狀況:AdventureWorks

AdventureWorks 範例資料庫的資料分割狀況下,Adventure Works Cycles 藉由在兩個資料表之間切換,將 TransactionHistory 資料表的舊資料封存到 TransactionHistoryArchive 資料表。方法是對 TransactionHistoryTransactionDate 欄位進行資料分割。每一個資料分割的數值範圍是一個月。TransactionHistory 資料表維護年度最新的交易,而 TransactionHistoryArchive 則維護舊的交易。以這種方式進行資料分割,每當單一月份變成年度舊資料時就可以每個月固定從 TransactionHistory 傳送到 TransactionHistoryArchive

每個月一開始,目前 TransactionHistory 資料表中最早月份的資料就會切換到 TransactionHistoryArchive 資料表。若要完成此工作,需要下列條件:

  1. TransactionHistoryArchive 資料表和 TransactionHistory 資料表必須有相同的設計結構。也必須要有空的資料分割才能接收新資料。在此狀況下,TransactionHistoryArchive 是一個由兩個資料分割所組成的資料分割資料表 — 一個資料分割保留所有 2003 年 9 月以前的所有資料,另一個資料分割則保留 2003 年 9 月和之後的所有資料。最後一個資料表則是空的。
    分割切換之前的資料表結構
  2. 修改 TransactionHistoryArchive 資料表的資料分割函數將空的資料分割分成兩個,一個資料分割定義為接收 2003 年 9 月資料的新資料分割。
    分割切換的第一個步驟
  3. TransactionHistory 資料表的第一個資料分割,包含 2003 年 9 月期間建立的所有資料,會切換到 TransactionHistoryArchive 資料表的第二個資料分割。請注意,必須在 TransactionHistory 資料表上定義檢查條件約束,以指定沒有比 9 月 1 日更早的資料 (TransactionDate >= '9/01/2003')。此條件約束可確保資料分割 1 僅包含 2003 年 9 月的資料,而且準備好切換到僅保留 TransactionHistoryArchive 資料表 2003 年 9 月資料的資料分割。您也需注意沒有與相對資料表校準的任何索引,必須在切換之前先卸除或停用。但是,它們可以在切換之後重新建立。如需有關校準資料分割索引的詳細資訊,請參閱<資料分割索引的特殊指導方針>。
    分割切換的第二個步驟
  4. 修改 TransactionHistory 資料表的資料分割函數將前兩個資料分割合併成單一資料分割。此資料分割 (現在是資料分割 1) 包含在 2003 年 10 月建立的所有資料,如果改變現有的檢查條件約束指定沒有比 10 月 1 日還早的資料 (TransactionDate >= '10/01/2003'),就會在下個月準備切換到 TransactionHistoryArchive
    分割切換的第三個步驟
  5. 再次修改 TransactionHistoryArchive 資料表的資料分割函數,將第二個資料分割與第一個資料分割合併,第二個資料分割包含剛剛加入的 9 月資料。此動作會將 TransactionHistoryArchive 資料表變回它原來的狀況,第一個資料分割保留所有資料,而第二個資料分割是空的。
    分割切換的第四個步驟
  6. 再次修改 TransactionHistory 資料表的資料分割函數將最後的資料分割分成兩個資料分割,以便將最新月份和前一月份分開,該資料分割就可以準備接收新資料。
    分割切換的第五個步驟

您可以在<Readme_SlidingWindow>找到實作此狀況的完整 Transact-SQL 指令碼。

請參閱

概念

使用資料分割切換有效傳送資料
修改資料分割資料表與索引

說明及資訊

取得 SQL Server 2005 協助