連載
» 2006年12月21日 00時00分 公開

データパーティショニングで巨大DBも楽々管理SQL Server 2005を使いこなそう(11)(2/3 ページ)

[石橋潤一,株式会社システムインテグレータ]

データパーティショニングの実装

 それでは、構築手順が分かったところで、実際にデータパーティショニングを実装してみましょう。今回の実装では、次のような簡単な売り上げテーブルを分割してみることにしました。テーブルは表1のような定義です。

列名 分割列
SALES_NO numeric(10,0)  
SALES_DATE datetime
CUST_NAME varchar(100)  
SALES_AMOUNT numeric(10,0)  
表1 売り上げテーブル(テーブル名:SALES)

パーティション関数の作成

 上記テーブルを作成する前に、まずパーティション関数を作成します。今回はSALES_DATE列を分割列に指定し、分割期間を1カ月ごととします。

CREATE PARTITION FUNCTION testPF (datetime)
AS RANGE RIGHT FOR VALUES (
  '2005/2/1','2005/3/1','2005/4/1','2005/5/1','2005/6/1',
  '2005/7/1','2005/8/1','2005/9/1','2005/10/1','2005/11/1',
  '2005/12/1','2006/1/1');
リスト1 パーティション関数の作成

 リスト1のクエリの場合、表2のような分割ルールとなります。RANGE句の指定により、値範囲が異なります。

RANGE LEFTを指定した場合
パーティション 1 2 13
col <= 2005/2/1 col > 2005/2/1 AND
col <= 2005/3/1
col > 2006/1/1

RANGE RIGHTを指定した場合
パーティション 1 2 13
col < 2005/2/1 col >= 2005/2/1 AND
col < 2005/3/1
col >= 2006/1/1
表2 パーティション関数による分割

パーティション構成の作成

 続いて、パーティション構成を作成します。パーティション関数で指定された13個のパーティションに対し、ファイルグループを割り当てます。いくつかのパーティションで同じファイルグループを指定したり、すべてのパーティションを同じファイルグループに指定することも可能です。

 パーティション構成を作成するコードはリスト2のような形です。今回は3個のファイルグループを利用することにしました。

CREATE PARTITION SCHEME testPS
AS PARTITION testPF             --パーティション関数の指定
TO (FG1,FG1,FG1,FG1,FG2,FG2,FG2,FG2,FG3,FG3,FG3,FG3,FG3);
リスト2 パーティション構成の作成

 パーティション関数で指定されたパーティション数とファイルグループ数が一致しない場合、エラーとなります。

テーブルの作成

 ここまでの流れでパーティショニングを行う準備が整ったので、後は実際のテーブルを作成するだけです。テーブルの作成時は、利用するパーティション構成と分割列を指定します。

CREATE TABLE [dbo].[SALES] (
  [SALES_NO] [numeric](10, 0) IDENTITY (1, 1) NOT NULL ,
  [SALES_DATE] [datetime] NULL ,
  [CUST_NAME] [varchar] (100) COLLATE Japanese_CI_AS NULL ,
  [SALES_AMOUNT] [numeric](10, 0) NULL 
) ON testPS(SALES_DATE);     --パーティション構成と分割列の指定
リスト3 テーブルの作成

 以上でデータパーティショニングの構築が完了しました。このテーブルにデータを登録すると、パーティション関数で指定された値範囲に従って、それぞれのファイルグループへデータが保存されます。今回は試験用に、2005年のデータ約100万件を登録しました。それぞれのパーティションには約8万件が登録されています。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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