(例)
4.2 セグメントの設計
4.2.1 セグメントの状態
セグメントには次の表に示す状態があります。
表 4‒2 セグメントの状態
セグメントの状態 説明
使用中セグメント※ 表又はインデクスのデータを格納しているセグメントです。
データが満杯でセグメント内にデータを追加できないセグメントを満杯セグメント,それ以外 の使用中セグメントを空きありセグメントといいます。
空きありセグメントのうち,データの削除でセグメント内の全ページが空きページ(使用中空 きページ又は未使用ページ)のセグメントを使用中空きセグメントといいます。
未使用セグメント 使用されたことがないセグメントです。このセグメントは RD エリア内のすべての表(又はイ
ンデクス)が使用できます。
空きセグメント データを格納していないセグメントです。使用中空きセグメントと未使用セグメントは空きセ
グメントになります。
注※
使用中セグメントを使用できるのは,このセグメントにデータを格納した表又はインデクスだけです。
ほかの表又はインデクスはこのセグメントを使用できません。
4.2.2 セグメントの設計方針
セグメントサイズはデータの入出力時間又はディスク所要量に影響を与えるため,綿密に設計する必要が あります。通常は 1 セグメント当たり 10〜20 ページ程度にすることをお勧めします。セグメントの設計 については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。
4.2.3 セグメント内の空きページ比率
表を定義するときにセグメント内の空きページ比率を設定できます。セグメント内の空きページ比率を次 の図に示します。
4. データベースの物理構造
図 4‒2 セグメント内の空きページ比率
〔説明〕
• セグメント内の空きページ比率を 30%としています。したがって,10 ページ中 3 ページが空きペー ジになります。
• セグメント内の空きページ比率は,CREATE TABLEの
PCTFREE
オプションで指定します。空き ページ比率は 0〜50%の範囲で指定でき,省略値は 10%となります。• ここで指定した空きページには,表へのデータロード(リロード又は表の再編成も含む)時にデー タを格納しません。
セグメント内の空きページ比率を小さくすれば,データの格納効率が向上します。
セグメント内の空きページ比率を大きくすれば,性能が向上することがあります。例えば,クラスタキー を定義した表にデータを追加する場合,セグメント内の空きページ比率を設定しておくと,クラスタキー の値に近い場所のページにデータが格納されるため,データの入出力回数を削減できます。
セグメント内の空きページ比率の設計については,マニュアル「HiRDB システム導入・設計ガイド」を 参照してください。
4.2.4 セグメントの確保と解放
表を定義したときにはセグメントを確保しません。表にデータを格納するときに必要に応じてセグメント を確保します。一度確保したセグメント(一度使用したセグメント)はそのセグメントを解放しないかぎ り,ほかの表又はインデクスが使用できません。このため,データの追加と削除を繰り返した場合,デー タ量が増えていないのに RD エリアが容量不足になることがあります。これを防ぐには次に示す操作を定 期的に行ってセグメントを解放してください。
• データベース再編成ユティリティ(pdrorg コマンド)による表の再編成又はインデクスの再編成
• 空きページ解放ユティリティ(pdreclaim コマンド)による使用中空きセグメントの解放
表の再編成,インデクスの再編成,使用中空きセグメントの解放については,マニュアル「HiRDB シス テム運用ガイド」を参照してください。なお,これらの操作以外にも次に示す操作をした場合はセグメン トを解放します。
4. データベースの物理構造
• PURGE TABLE 文の実行
• RD エリアの再初期化
• 表の定義の削除
• インデクスの定義の削除
• データロードを作成モード(-d オプション指定)で実行
4.2.5 空き領域の再利用
空き領域の再利用機能を使用すると,データの削除でできる空き領域を有効活用できます。
(1) データ格納時のサーチ方式
表にデータを格納するとき,格納領域をサーチする方式には次の二つのページサーチモードがあります。
•
新規ページ追加モード
使用中セグメントの最終ページが満杯になると,新規に未使用セグメントを確保します。RD エリア中 に未使用ページがなくなると,使用中ページの空き領域を使用中セグメントの先頭からサーチして空き 領域にデータを格納します。
•
空きページ再利用モード
使用中セグメントの最終ページが満杯になると,未使用セグメントを確保する前に使用中セグメント内 の使用中ページの空き領域をサーチします。また,次回サーチ開始位置を記憶し,次に空き領域をサー チするときそこからサーチを開始します。
(2) 空き領域の再利用機能とは
空き領域の再利用機能とは,表の使用中セグメントがユーザの指定したセグメント数に達し,そのセグメ
ントが満杯になるとページサーチモードを空きページ再利用モードに切り替えて,使用中ページの空き領 域を使用する機能です。指定した数のすべてのセグメントに空き領域がなくなると,新規ページ追加モー ドに切り替わり,新規に未使用セグメントを確保します。なお,セグメント数を指定しないと RD エリア 中に未使用ページがなくなるまで空き領域を再利用しません。空き領域の再利用機能を使用しない場合,毎回使用中セグメントの先頭から空き領域をサーチします。この機能を使用している場合,空きページ再 利用モードに切り替わった後,次回サーチ位置を記憶してそれ以降をサーチするのでこの機能を使用しな い場合より効率良くサーチできます。空き領域の再利用機能の概要を次の図に示します。
4. データベースの物理構造
図 4‒3 空き領域の再利用機能の概要
〔説明〕
• 空き領域の再利用機能を使用しない場合
RD エリア中に未使用ページがなくなると,その後データが挿入されるたびに使用中セグメントの 先頭から使用中ページの空き領域をサーチして空き領域にデータを格納します。
• 空き領域の再利用機能を使用した場合(セグメント数指定あり)
指定したセグメント数に達した後で表にデータを挿入しようとすると,未使用セグメントを確保し ないで,使用中ページの空き領域を使用中セグメントの先頭からサーチしてそこにデータを格納し ます。そこで次回サーチ開始位置を記憶しておき,次に空き領域をサーチするときはそこからサー チを開始します。
• 空き領域の再利用機能を使用した場合(セグメント数指定なし)
4. データベースの物理構造
RD エリア中に未使用ページがなくなってからデータを挿入しようとすると,使用中ページの空き 領域を使用中セグメントの先頭からサーチしてそこにデータを格納します。そこで次回サーチ開始 位置を記憶しておき,次に空き領域をサーチするときはそこからサーチを開始します。
空き領域の再利用機能の詳細は,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。
(3) 適用基準
削除と挿入を繰り返すため,データ量に対してセグメントが大量に消費され,頻繁に再編成しなければな らない業務で,再編成の回数をできるだけ減らしたい場合に空き領域の再利用機能を使用してください。
(4) 環境設定
空き領域の再利用機能を使用するための環境設定について次に示します。詳細は,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。
1.
pd_assurance_table_no
オペランドに空き領域の再利用機能を使用する表数を指定します。2. 定義系 SQL の CREATE TABLE の
SEGMENT REUSE
オプションでセグメント数を指定します。作 成済みの表に対しては ALTER TABLE の SEGMENT REUSE オプションで指定します。(5) 注意事項
次の場合,空き領域の再利用機能は動作しません。
• ハッシュ分割表のリバランス機能でデータを格納するとき
• データロードやデータベース再編成ユティリティ(pdrorg)で表にデータを格納するとき
• ユーザ LOB 用 RD エリアのとき
4. データベースの物理構造