中の技術日誌
 ホーム / 上へ

SQL:SQL Server 2005 パーティション機能の実装

2005/08/11

この文書はSQL Server 2005 CTP June/2005時点をベースに記述されています。

パーティション自身についてはSQL:SQL Server 2005 パーティション機能とはに解説してあります。

パーティションを作成する場合にまずはファイルグループとファイルを設定します。その概念自体はSQL:SQL Server 物理配置とファイルグループを参考にしてください。

次にパーティション関数を設定します。

パーティション関数は以下のように設定します。

create partition function PartitionFunc(int) as range left
for values(100, 200, 300)

通常の関数と同様のようでいろいろと書き方があります。

まず引数ですが一つに限られた上、型しか指定しません。

次にレンジ(後述)を指定します。そしてvaluesです。

パーティション関数はあくまでレコードをどのファイルグループに所属させるかを判断する関数です。Valuesはその境目として定義します。100を区切りに前のファイルグループにするか、後ろのグループにするかという意味です。今回の関数は3つ 値を定義してるので、4分割するということを表しています。

ただこのままでは指定した100という値自身が、前のファイルグループに属するのか、後ろのファイルグループに属するのかわかりません。それがレンジです。

left

id 1 99 100 101 199 200 201 299 300 301
value
ファイルグループ 1 1 1 2 2 2 3 3 3 4

right

id 1 99 100 101 199 200 201 299 300 301
value
ファイルグループ 1 1 2 2 2 3 3 3 4 4

色分けされたグループがファイルグループの単位になります。leftの場合には指定したあたいそのものはleft(前)に属することになり、rightの場合には後ろ側に属することになります。

パーティション関数が定義できたら次はパーティションスキームです。

create partition scheme PartitionScheme
as partition PartitionFunc
To (PartitionFG1, PartitionFG2, PartitionFG3, PartitionFG4)--PartitionFG*はファイルグループ

これはあまり説明の必要もないが、先に定義したパーティション関数と、ファイルグループと結び付けている。

Toの中に定義するファイルグループの数はパーティション関数で定義した数と同じにしておかなければいけない。

--パーティションを利用したテーブルとPKインデックスを作成する
CREATE TABLE [dbo].[PartitionTable](
    [ID] [int] NOT NULL,
    [VALUE] [nchar](4000) COLLATE Japanese_CI_AS NULL,
 CONSTRAINT [PK_PartitionTable] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
) ON [PartitionScheme]([ID])
) ON [PartitionScheme]([ID])

最後にそれを利用するテーブルを定義する。

どのファイルグループに所属するかを定義すON句の部分がスキーマ(パラメータ)という形式になっている。

応用はまたの機会に

今回利用したSQLのフルセット
00009.txt

パスは各自の環境に合わせて変更して欲しい。


勉強会: 01/12 大阪#5, 02/03 東京#4 , 02/10 大阪#6 登録受付中

中の技術日誌
コンテンツ
わんくま同盟
わんくま同盟
わんくま同盟
広告
バナー
MVP LOGO
MSMVP Visual C# Since 2004/04-2007/03
MCP LOGO
070-316
姉妹サイト
姉妹サイト:じゃんぬのC#, VB.NET 入門
じゃんぬの
C#, VB.NET 入門
検索
Google

ブログ本家
広告