パーティション化/区分化表 (V5R3)

ORACLE では「パーティション化」、SQL サーバーでは「パーティション分割」といわれる機能が、「パーティション化/区分化」として V5R3 からサポートされるようになりました。(英語で言えば全部同じ "PARTITION" なんですけどね)

前提として DB2 マルチ・システムという有償のライセンス・プログラムが導入されている必要があります。

DB2/400 の場合、もともとディスク I/O は自動的に平準化されるようになっていますし、オプティマイザーによるデータベース・アクセス・メソッドが並列化に対応 (SMP フィーチャー使用時) しているため、一義的にはあまり ORACLE や SQL サーバーのようにパフォーマンスの事情から必要されている機能ではないと言えます。
V5R3 の現時点では主にテーブルの最大サイズや最大行数を超えてしまうようなケースの時に対処するための機能ということになりますね。

物理ファイルの制限として、Information Center に以下の記述があります。(「データベース・サイズ」)

ファイル・メンバーに入れるレコードの数 4,294,967,294 レコード2
ファイル・メンバー内のバイト数 1,869,162,846,624 バイト

また、「SQL の制約」にも以下のような記述があります。

非パーティション表の最大サイズ 1.7 テラバイト
非パーティション表の行の最大数 4 294 967 288

V5R3 ではパーティション表として、256 のパーティションに分割することができ、これは基本的にメンバーとして実装されます。
単純に計算すると上の「ファイル・メンバーに入れるレコードの数」x 256 が、パーティション化されたテーブルの最大レコード数、ということになりますね。
こうした最大レコード数やサイズ数への対応として、パーティション化がサポートされるようになった、ということのようです。

DB2 マルチ・システム、というあまりどこにでも入っているようなわけではないライセンス・プログラムが必要なため、なかなか実行してみる環境がありません。
とりあえず、どんなふうに作るのか、インターフェイスだけでも見てみましょう。


パーティション化表への変更

STRSQL の画面や iSeries ナビゲーターの「データベース」から新規のパーティション化表の作成や、既存のテーブルをパーティション化表に変更することができます。

最大行数や最大サイズに対応するための機能ですから、やはり既存のテーブルを変更するやり方を紹介します。
(この既存テーブルの変更、という機能がサポートされないというなかなかシブい製品もあったりしますが)

対話型 SQL で行う場合は ALTER TABLE 文で行います。

iSeries ナビゲーターの場合は、「テーブル」ビューの中で、該当テーブルをポイントした右クリックメニューの「定義」から行います。

「区分化」というタブが増えています。

パーティション化は、「ハッシュ」と「範囲(レンジ)」で行います。

まず範囲が決まり、ほとんどその範囲内で他の選択条件が完結するような場合は「範囲(レンジ)」を選択するべきでしょう。
普段それぞれに使用している個別のテーブルがあり、それを必要な時々に UNION する、というイメージですね。
ちなみに現行の Windows版/UNIX版の UDB ではこの「レンジによるパーティション化」はサポートされていません。

ハッシュ、というのはパーティションの数を指定してのパーティション化になります。

SQL で書くと、たとえば↓のようになります。(ハッシュ・パーティションの場合)

ALTER TABLE SAMPLE.EMPLOYEE ADD PARTITION BY HASH (EMPNO) INTO 5 PARTITIONS

考慮点

Information Center での考慮点についての記載はこちらにあります。

[Top Pageに戻る]

Ads by TOK2