スケーラブルデータベースサーバ HiRDB Version 8 解説(UNIX(R)用)

[目次][用語][索引][前へ][次へ]

4.2 セグメントの設計

<この節の構成>
(1) セグメントの状態
(2) セグメントの設計方針
(3) セグメント内の空きページ比率
(4) セグメントの確保と解放
(5) 空き領域の再利用

(1) セグメントの状態

セグメントには次の表に示す状態があります。

表4-2 セグメントの状態

セグメントの状態 説明
使用中セグメント 表又はインデクスのデータを格納しているセグメントです。特に,データが満杯でセグメント内にデータを追加できないセグメントを満杯セグメントといい,データの削除でセグメント内の全ページが空きページ(使用中空きページ又は未使用ページ)のセグメントを使用中空きセグメントといいます。
未使用セグメント 使用されたことがないセグメントです。このセグメントはRDエリア内のすべての表(又はインデクス)が使用できます。
空きセグメント データを格納していないセグメントです。使用中空きセグメントと未使用セグメントは空きセグメントになります。

注※
使用中セグメントを使用できるのは,このセグメントにデータを格納した表又はインデクスだけです。ほかの表又はインデクスはこのセグメントを使用できません。

(2) セグメントの設計方針

セグメントサイズはデータの入出力時間又はディスク所要量に影響を与えるため,綿密に設計する必要があります。通常は1セグメント当たり10〜20ページ程度にすることをお勧めします。セグメントの設計については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

(3) セグメント内の空きページ比率

表を定義するときにセグメント内の空きページ比率を設定できます。セグメント内の空きページ比率を次の図に示します。

図4-2 セグメント内の空きページ比率

[図データ]

〔説明〕
  • セグメント内の空きページ比率を30%としています。したがって,10ページ中3ページが空きページになります。
  • セグメント内の空きページ比率は,CREATE TABLEPCTFREEオプションで指定します。空きページ比率は0〜50%の範囲で指定でき,省略値は10%となります。
  • ここで指定した空きページには,表へのデータロード(リロード又は表の再編成も含む)時にデータを格納しません。

セグメント内の空きページ比率を小さくすれば,データの格納効率が向上します。

セグメント内の空きページ比率を大きくすれば,性能が向上することがあります。例えば,クラスタキーを定義した表にデータを追加する場合,セグメント内の空きページ比率を設定しておくと,クラスタキーの値に近い場所のページにデータが格納されるため,データの入出力回数を削減できます。

セグメント内の空きページ比率の設計については,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

(4) セグメントの確保と解放

表を定義したときにはセグメントを確保しません。表にデータを格納するときに必要に応じてセグメントを確保します。一度確保したセグメント(一度使用したセグメント)はそのセグメントを解放しないかぎり,ほかの表又はインデクスが使用できません。このため,データの追加と削除を繰り返した場合,データ量が増えていないのにRDエリアが容量不足になることがあります。これを防ぐには次に示す操作を定期的に行ってセグメントを解放してください。

表の再編成,インデクスの再編成,使用中空きセグメントの解放については,マニュアル「HiRDB Version 8 システム運用ガイド」を参照してください。なお,これらの操作以外にも次に示す操作をした場合はセグメントを解放します。

(5) 空き領域の再利用

空き領域の再利用機能を使用すると,データの削除でできる空き領域を有効活用できます。

(a) データ格納時のサーチ方式

表にデータを格納するとき,格納領域をサーチする方式には次の二つのページサーチモードがあります。

(b) 空き領域の再利用機能とは

空き領域の再利用機能とは,表の使用中セグメントがユーザの指定したセグメント数に達し,そのセグメントが満杯になるとページサーチモードを空きページ再利用モードに切り替えて,使用中ページの空き領域を使用する機能です。指定した数のすべてのセグメントに空き領域がなくなると,新規ページ追加モードに切り替わり,新規に未使用セグメントを確保します。なお,セグメント数を指定しないとRDエリア中に未使用ページがなくなるまで空き領域を再利用しません。空き領域の再利用機能を使用しない場合,毎回使用中セグメントの先頭から空き領域をサーチします。この機能を使用している場合,空きページ再利用モードに切り替わった後,次回サーチ位置を記憶してそれ以降をサーチするのでこの機能を使用しない場合より効率良くサーチできます。空き領域の再利用機能の概要を次の図に示します。

図4-3 空き領域の再利用機能の概要

[図データ]

〔説明〕
  • 空き領域の再利用機能を使用しない場合
    RDエリア中に未使用ページがなくなると,その後データが挿入されるたびに使用中セグメントの先頭から使用中ページの空き領域をサーチしてそこに空き領域にデータを格納します。
  • 空き領域の再利用機能を使用した場合(セグメント数指定あり)
    指定したセグメント数に達した後で表にデータを挿入しようとすると,未使用セグメントを確保しないで,使用中ページの空き領域を使用中セグメントの先頭からサーチしてそこにデータを格納します。そこで次回サーチ開始位置を記憶しておき,次に空き領域をサーチするときはそこからサーチを開始します。
  • 空き領域の再利用機能を使用した場合(セグメント数指定なし)
    RDエリア中に未使用ページがなくなってからデータを挿入しようとすると,使用中ページの空き領域を使用中セグメントの先頭からサーチしてそこにデータを格納します。そこで次回サーチ開始位置を記憶しておき,次に空き領域をサーチするときはそこからサーチを開始します。

空き領域の再利用機能の詳細は,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

(c) 適用基準

削除と挿入を繰り返すため,データ量に対してセグメントが大量に消費され,頻繁に再編成しなければならない業務で,再編成の回数をできるだけ減らしたい場合に空き領域の再利用機能を使用してください。

(d) 環境設定

空き領域の再利用機能を使用するための環境設定について次に示します。詳細は,マニュアル「HiRDB Version 8 システム導入・設計ガイド」を参照してください。

  1. pd_assurance_table_noオペランドに空き領域の再利用機能を使用する表数を指定します。
  2. 定義系SQLのCREATE TABLEのSEGMENT REUSEオプションでセグメント数を指定します。作成済みの表に対してはALTER TABLEのSEGMENT REUSEオプションで指定します。
(e) 注意事項

次の場合,空き領域の再利用機能は動作しません。