スケーラブルデータベースサーバ HiRDB Version 8 システム運用ガイド(UNIX(R)用)

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

22.8 データベースのチューニング

RDエリア単位の状態解析情報は,容量面やデータベースの乱れをチューニングするために必要な情報です。定義したRDエリアの状態,表やインデクスの格納状態からデータベースの状態を解析します。

取得する情報
データベース状態解析ユティリティで,各種情報を取得してください。
<この節の構成>
(1) RDエリア単位の物理的解析情報
(2) RDエリア単位の論理的解析情報
(3) 表,インデクス単位の論理的解析情報
(4) クラスタキー及びクラスタリングデータページの格納状態解析

(1) RDエリア単位の物理的解析情報

確認する目的
RDエリア単位の物理的解析情報では,RDエリアの使用効率や容量の状態をRDエリア定義時の容量又はセグメントサイズなどから,妥当性を判断するために取得します。
表やインデクスを意識しないでRDエリア内のすべてのセグメント,及びすべてのページの格納状態を解析し,RDエリアの使用効率や容量の状態をつかんでください。

解析結果の妥当性を判断する方法
●使用中セグメント比率が低い場合
未使用セグメントが多いと考えられます。このため,次に示す内容を検討してください。
  • 一つのRDエリアを複数のHiRDBファイルで構成している場合,個々のファイル容量から,すべてのHiRDBファイルが使用されていないか調査してください。
  • 今後予定されているデータの追加量,表やインデクスの定義などから判断してください。
使用中セグメント比率が高く使用中ページ比率が低い場合
次に示す要因が考えられるため,セグメント内の空きページ比率が大き過ぎないか確認してください。
  • RDエリアが効率良く使用されていないと考えられます。
  • 使用中セグメント比率が高くなる要因としては,RDエリア定義時に指定したセグメントサイズが,RDエリアの容量と比較して大きい値を設定するとセグメント数が少なくなり,定義した表やインデクスがすべてのセグメントを使用していると考えられます。
●使用中セグメント比率が高く,使用中ページ比率が高い場合
次に示す要因が考えられます。
  • RDエリア内に空きが少ないことが考えられます。
  • 満杯ページ比率が高い場合は,容量が不足していることが考えられます。

対策方法
RDエリアの作成時に指定したセグメントサイズが妥当な値であるかどうかを調査してください。該当するRDエリアに格納する表又はインデクスの件数と,データ件数から妥当性を判断してください。特に満杯ページ比率が高い又は低い場合は,次に示す方法で対策してください。
  • 満杯ページ比率が高い場合は,データベース構成変更ユティリティで,RDエリアを拡張してください。又は,RDエリア内の表やインデクスを,ほかのRDエリアに移してください。
  • 満杯ページ比率が低い場合は,RDエリア内の格納効率が下がり,データの配置に乱れが発生していることが考えられます。この場合,データベース再編成ユティリティで,RDエリア単位に表を再編成してください。
  • データディクショナリ用RDエリアの場合は,データベース再編成ユティリティで-Cオプションにdirを指定して,再編成してください。なお,データディクショナリ用RDエリアを再編成するときは,特定のディクショナリ表だけを再編成するか,又はすべてのディクショナリ表を再編成するかを選択できます。ディクショナリ表の指定を省略すると,すべてのデータディクショナリ用RDエリアを対象に再編成します。

(2) RDエリア単位の論理的解析情報

確認する目的
RDエリア単位の論理的解析情報では,次に示す内容の妥当性を判断するために取得します。
  • RDエリアの容量が見積もった容量と一致しているかどうか
  • データベースを再編成するかどうか
RDエリアごとに表やインデクスの全セグメント,及び全ページの格納状態を解析してください。

解析結果の妥当性を判断する方法
●表に関する状態解析情報
  1. 使用中セグメント比率が高い場合
    該当するRDエリアに未使用セグメントがないときは,これ以上のデータを挿入できないと考えられます。この場合,今後の追加するデータ量,又は更新するデータ量から,空き領域(PCTFREE)の妥当性を検討してください。
  2. 使用中セグメント比率が高く,使用中ページ比率が低い場合
    PCTFREEオペランドで指定したセグメント内の空きページ比率が適切ではないと考えられます。この場合,今後の追加するデータ量,又は更新するデータ量から,空き領域(PCTFREE)の妥当性を検討してください。
  3. 見積もったページ数よりも,使用中ページ数が多い場合
    VARCHAR,NVARCHAR,又はMVARCHARの列を含むときは,これらの列のデータ長が255バイトを超えたことを考慮して,計算したかどうか見直してください。
  4. 満杯セグメント比率が高く,満杯ページ比率も高い場合
    RDエリアの容量が不足しています。又は,次に示す操作を繰り返したため,データの配置が乱れています。
  • ナル値のデータから,ほかの数値又は文字への更新
  • VARCHAR,NVARCHAR,又はMVARCHARの列に対して,列長が長くなる更新
  • 列の値をナル値に更新,又はVARCHAR,NVARCHAR,MVARCHARの列に対して行長が短くなる更新
●インデクスに関する状態解析情報
使用中セグメント数及び使用中ページ数が,机上で計算したページ数よりも多い場合は,キー値を大量に追加したためインデクススプリットが多発し,ページの使用率が増加したと考えられます。

対策方法
  • RDエリアを拡張するか又は該当するRDエリアに複数の表を格納している場合,表を異なるRDエリアに配置してください。
  • データベース再編成ユティリティを使用して表を再編成してください。
  • 表定義時に指定したPCTFREEオペランドのセグメント内の空きページ比率の指定を見直してください。
  • 表定義時に指定したPCTFREEオペランドのページ内の未使用領域比率の指定を見直してください。

(3) 表,インデクス単位の論理的解析情報

確認する目的
表を横分割した場合,分割した表やインデクスが,正しく分割されているか検討してください。この場合,出力されたデータ量(セグメント数,ページ数)と,見積もったデータ量と比較して,分割方法が正しいかどうか確認します。また,表又はインデクスの格納状態から,データベースを再編成するかどうかも確認できます。

解析結果の妥当性を判断する方法
●表に関する状態解析情報
  1. 満杯セグメント比率や満杯ページ比率が80%以上の場合
    見積もったセグメント数からみて,使用中ページ比率が非常に高い場合,表の格納状態が乱れていると考えられます。
  2. 表を横分割している場合
    特定のRDエリアの使用中セグメント数が多いとき,又は特定のRDエリアに格納されている行数が多いときは,表を最適に分割していないと考えられます。あらかじめ予想されているデータ量から,表の横分割方法を見直してください。また,既にハッシュ分割している場合は,ハッシュ関数を変更してください。このとき,RDエリアごとの格納行数を確認して,行数が均等になるようにしてください。
  3. 表の総未使用ページ比率{(総ページ数−総使用中ページ数)÷総ページ数}が,表定義時に指定したセグメント内の空きページ比率よりも小さい場合
    データを繰り返し追加したため,未使用ページが少なくなっていることが考えられます。
  4. これから追加するデータ量に比べて空きページが多い場合
    セグメント内の空きページ比率が大き過ぎると考えられます。又は,データの削除によって使用中空きページが増えたと考えられます。
●インデクスに関する状態解析情報
  1. 表の格納行数からインデクスの格納ページ数を計算し,解析結果の総使用中ページ数より少ない場合
    特定範囲の行を大量に削除すると対応するインデクスのキー値も削除されるため,インデクスページに使用中空きページが発生していると考えられます。
  2. 使用中ページがほとんど満杯ページの場合
    データベース再編成ユティリティでインデクスを再編成してもこの状態になる場合は,セグメント内の空きページ比率が適切な値でないと考えられます。又は,データを追加しているため,ページ内の空き領域がなくなっていると考えられます。

対策方法
●表に関する状態解析情報
  1. 満杯セグメント比率や満杯ページ比率が高い場合
    今後もデータを追加するときは該当する表を再編成してください。
  2. 空きページ(未使用ページ)が多い場合
    セグメント内の空きページ比率を見直してください。
  3. データの削除で使用中空きページが増えている場合
    表を再編成するか,インデクスを再編成するか,又は使用中空きページを解放してください。
  4. RDエリア内に未使用セグメントが少ない場合
    RDエリアを拡張してください。
●インデクスに関する状態解析情報
  1. 使用中空きページが多い場合
    表を再編成するか,インデクスを再編成するか,又は使用中空きページを解放してください。
  2. 今後もデータの追加などが予想される場合
    定義したインデクスの列のデータがランダムに発生するときは,インデクスを再度定義し,PCTFREEオペランドで適切な値を指定してください。
  3. ほかのRDエリアに比べて,特定のRDエリアだけが使用中ページ数が多い場合
    表の分割方法を再度検討してください。表の横分割後のデータ量がすべてのRDエリアで平均するようにしてください。
  4. 特定のRDエリアだけ使用中空きページが多い場合
    RDエリア内の表及びインデクスを再編成するか,使用中空きページを解放してください。

(4) クラスタキー及びクラスタリングデータページの格納状態解析

確認する目的
クラスタキーを定義している場合,表及びインデクスの乱れ具合を示す格納順序不正率,重複構造で格納されているキー数を確認してください。
クラスタキーの格納状態解析
クラスタキーをキー順に検索して,格納位置がページ又はセグメントにわたって格納されている格納位置変更回数と,格納位置変更回数のうち格納順序がページ(セグメント)の昇順に対して逆方向に格納されている格納順序不正回数(率)をページ単位及びセグメント単位で表示します。
ページ分割の発生によって格納順序不正率は上昇します。
クラスタリングデータページの格納状態解析
クラスタキーを定義した表のデータページをクラスタリングデータページといいます。
クラスタキー中の行データの格納位置情報によって,クラスタキー順に検索した場合の行データの格納位置変更回数と格納順序不正回数(率)をページ単位及びセグメント単位で表示します。
行の追加及び更新によって格納状態が乱れると,格納順序不正率か格納位置変更回数のどちらか,又は両方が増加します。

解析結果の妥当性を判断する方法
●クラスタキーの格納状態解析情報
  1. インデクス中の格納キー数に比較して行数が多い場合
    キーの重複率が高いため,インデクスを使用した検索性能に影響を及ぼします。
  2. 重複キー構造で格納されているキーがある場合
    重複度の高いキーがある(又は過去にあった)ため,インデクスを使用した検索性能に影響を及ぼします。
  3. 格納順序不正率が高い場合
    データページの格納順序が乱れているため,検索性能に影響を及ぼします。
●クラスタリングデータページの格納状態解析情報
  1. 格納順序不正率が高い場合
    データページの格納順序が乱れているため,クラスタキー順アクセス性能に影響を及ぼします。
  2. 格納位置変更回数が表単位の状態解析結果の使用中セグメント数又はページ数から−1したものより大きい場合
    データページの格納順序が乱れているため,クラスタキー順アクセス性能に影響を及ぼします。

対策方法
●クラスタキーの格納状態解析情報
  1. インデクス中の格納キー数に比較して行数が多い場合
    インデクス定義の列構成を見直してください。
  2. 重複キー構造で格納されているキーがある場合
    現在,重複度の高いキーがある場合は,インデクス構成列中のデータ重複度の高い列を除いた形でクラスタ付きの表を再定義してください。過去に重複度の高いキーがあった場合は,データベース再編成ユティリティで表を再編成又はインデクスを再作成すると,重複キー構造はなくなります。
  3. 格納順序不正率が高い場合
    データベース再編成ユティリティで,表を再編成又はインデクスを再作成してください。
●クラスタリングデータページの格納状態解析情報
  1. 格納順序不正率が高い場合
    データベース再編成ユティリティで,表を再編成してください。
  2. 格納位置変更回数が表単位の状態解析結果の使用中セグメント数又はページ数から−1したものより大きい場合
    データベース再編成ユティリティで,表を再編成してください。