SQL:SQL Server 2005 パーティション機能の実装
この文書は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
パスは各自の環境に合わせて変更して欲しい。