8.2.1 レスポンスを向上させるポイント
処理のレスポンスを向上させるポイントについて説明します。
- 〈この項の構成〉
(1) トランザクション表
トランザクション表に対する処理のレスポンスを向上させるには,次のポイントがあります。
(a) 断片化の抑止
トランザクション表は,データ更新の頻度が高いですが,データを更新すると,データやインデクスのページには断片化した空き領域が発生し,性能が劣化することがあります。性能を安定させるために,定期的にデータベースを再編成する運用を設計してください。
データベース再編成を実行する間隔が長い場合は,断片化の発生を抑えるデータベース設計も考慮してください。UPDATE文の実行頻度が高い場合に,ページの断片化の発生を抑える設計方法について,次に説明します。
-
ページ内の未使用領域の比率(PCTFREE)の拡大
-
固定長データ型の適用
それぞれの方法の詳細について,次に説明します。
-
ページ内の未使用領域の比率(PCTFREE)の拡大
可変長データ型の列に対するUPDATE文の実行で行長が長くなるとき,行を格納するページに,更新後の行長が格納できる連続した空き領域がある場合は,行を格納するページは変わらず,断片化も発生しません。行長が変わるUPDATE文の実行頻度が高い場合は,連続した空き領域を通常よりも大きく確保できるよう,ページ内の未使用領域の比率の値を大きくしてください。ただし,ページ内の未使用領域の比率を大きくすると,格納効率に影響があるので,トレードオフを考慮して設計してください。ページ内の未使用領域の比率の詳細および値の求め方は,マニュアル「HiRDB システム導入・設計ガイド」の「ページ内の未使用領域の比率の設定」を参照してください。
-
固定長データ型の適用
UPDATE文の実行前後で行長が変わらない場合は,行の格納ページは変わらず,断片化も発生しません。よって,UPDATE文を頻繁に実行する列で,業務上固定長でも問題ない場合は,固定長のデータ型にしてください。
(b) 表の横分割の適用
トランザクション表は,横分割するとレスポンスを向上できることがあります。表の横分割の詳細は,「表の横分割」を参照してください。
(2) その他のポイント
(a) 列のデータ型
列のデータ型を検討するときに,考慮する点を次に示します。
-
DECIMAL型に関する注意事項
DECIMAL型の列に対して四則演算などの演算をする場合,10進パック形式のため,ほかの数値データ型の列の演算に比べて,処理の効率が悪くなります。格納するデータが整数の場合は,列のデータ型をINTEGER型またはSMALLINT型にしてください。
-
MCHARおよびMVARCHARに関する注意事項
MCHAR型およびMVARCHAR型(混在文字データ)の列の場合は,条件判定する際に半角文字と全角文字を区別するオーバーヘッドがあります。このため,半角文字と全角文字が混在する場合だけ使用してください。列のデータ型は,格納するデータが半角文字だけの場合はCHAR型およびVARCHAR型,全角文字だけの場合はNCHAR型およびNVARCHAR型にしてください。
-
BLOB型とBINARY型の使い分け
バイナリデータを格納できるBLOB型とBINARY型の使い分け方については,マニュアル「HiRDB システム導入・設計ガイド」の「BLOB型とBINARY型の使い分け」を参照してください。
(b) 空き領域の再利用機能と性能のトレードオフ
空き領域の再利用機能とは,表の使用中セグメントがユーザの指定したセグメント数に達し,そのセグメントが満杯になるとページサーチモードを空きページ再利用モードに切り替えて,使用中ページの空き領域を使用する機能です。機能の詳細は,マニュアル「HiRDB システム導入・設計ガイド」の「空き領域の再利用機能」を参照してください。
空き領域の再利用機能を適用すると,格納効率は良くなりますが,データの追加および更新時にデータの格納場所を使用中のページからサーチするため,オーバーヘッドがあります。空き領域再利用機能は,データの追加と削除を繰り返す表の場合だけ適用を検討してください。
また,データの追加および更新の性能を優先する表の場合は,空き領域再利用機能は適用しないで,空き領域をデータベース再編成や空きページ解放などで解放して,格納効率を上げることを推奨します。