連載
» 2004年11月30日 00時00分 公開

SQL Server 2000 チューニング全工程(3):速報! SQL Server 2005のデータパーティション (3/3)

[沖要和,NRIラーニングネットワーク]
前のページへ 1|2|3       

データパーティションの操作

 以降は、SQL Server 2005に付属するAdventureWorksデータベースでTransactionHistoryテーブルからTransactionHistoryArchiveテーブルに2003年9月分の受注データを移動する方法を図解します。

1. 初期状態

 TransactionHistoryテーブルには、12個のパーティションがあり月ごとの受注データが格納されています。TransactionHistoryArchiveテーブルには、2つのパーティションしかありません。2番目のパーティションは、空になっています。

図3 データパーティションの初期状態 図3 データパーティションの初期状態

2. TransactionHistoryArchiveテーブルに3つ目のパーティションを作成

 リスト11のスクリプトの最初のバッチにより、TransactionHistoryArchivePSパーティションスキームに次に展開するファイルグループを追加しています。2番目のバッチでは、パーティション関数に2003年10月のデータを格納するためのパーティション定義を追加します。これらのスクリプトにより、TransactionHistoryArchiveテーブルに、2003年10月のデータを格納するパーティションが用意されます。

ALTER PARTITION SCHEME TransactionHistoryArchivePS NEXT
  USED [PRIMARY];
GO
ALTER PARTITION FUNCTION TransactionHistoryArchivePF() 
  SPLIT RANGE ('10/01/2003');
GO
リスト11 TransactionHistoryArchiveに3つ目のパーティションを作成

図4 TransactionHistoryArchiveに3つ目のパーティションが追加された 図4 TransactionHistoryArchiveに3つ目のパーティションが追加された

3. TransactionHistoryテーブルのデータをTransactionHistoryArchiveテーブルに移動

 リスト12のスクリプトの最初のバッチにより、ソースとなるTransactionHistoryテーブルにCHECK制約が設定されます。このCHECK制約は、データの移動後もTransactionHistoryテーブルに残されるデータのキー値の範囲を定義しています。2番目のバッチでは、TransactionHistoryテーブルのパーティション1のデータ(2003年9月のデータ)をTransactionHistoryArchiveテーブルのパーティション2に移動します。このCHECK制約の指定は、パーティションを切り替える前に、必ず必要になります。

ALTER TABLE [Production].[TransactionHistory] ADD CONSTRAINT
  chk_DateRange check (TransactionDate >= '9/01/2003');
GO
ALTER TABLE [Production].[TransactionHistory]
  SWITCH PARTITION 1 
TO [Production].[TransactionHistoryArchive] 
  PARTITION 2;
GO
リスト12 アーカイブ用のテーブルにデータを移動

図5 TransactionHistoryテーブルのデータをTransactionHistoryArchiveテーブルに移動 図5 TransactionHistoryテーブルのデータをTransactionHistoryArchiveテーブルに移動

4.各テーブルのパーティションをマージ

 パーティションの移動後は、下図のような構成になります。

図6 パーティション移動後の構成 図6 パーティション移動後の構成

 リスト13のスクリプトの最初のバッチにより、TransactionHistoryテーブルの空になったパーティション1をパーティション2にマージし、2番目のバッチによりTransactionHistoryArchiveテーブルのパーティション1とパーティション2をマージします。

ALTER PARTITION FUNCTION TransactionHistoryPF() 
  MERGE RANGE ('10/01/2003');
GO
ALTER PARTITION FUNCTION TransactionHistoryArchivePF()
  MERGE RANGE ('9/01/2003');
GO
リスト13 パーティションのマージ

 マージ後は、下図の状態になります。

図7 マージ後の構成 図7 マージ後の構成

5.TransactionHistoryテーブルに12個目のパーティションを作成

 リスト14のスクリプトにより、TransactionHistoryテーブルに、2004年9月のデータを格納するためのパーティションを作成します。このスクリプトによりTransactionHistoryテーブルのパーティションは、12個に戻ります。

ALTER PARTITION SCHEME TransactionHistoryPS 
  NEXT USED [PRIMARY];
GO
ALTER PARTITION FUNCTION TransactionHistoryPF() 
  SPLIT RANGE
 ('09/01/2004');
GO
リスト14 12個目のパーティションを作成

図8 最終的なデータパーティション構成 図8 最終的なデータパーティション構成

SQL Server 2005 日本語Beta2の入手方法

 なお、今回の記事で紹介した内容は、「SQL Server 2005 日本語Beta2版」の仕様に基づいています。実際に記事の内容を試されたい場合は、SQL Server 2005 日本語Beta2を入手する必要があります。入手方法については、

を確認してください。なお、製品版では仕様が変更される可能性もありますのでご注意ください。


 今回はSQL Serverの次期バージョンとなるSQL Server 2005に搭載予定のデータパーティション機能を紹介しました。(次回に続く)


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。