表データの格納効率を重視する場合は,セグメントの再利用の設定を検討してください。
XDBでは,行の追加や更新によって新規ページの割り当てが発生した場合,最終セグメント(最後に確保したセグメント)に新規ページを確保します。最終セグメントに新規ページを割り当てる空き領域がない場合は,新たに新規セグメントを確保して新規ページを割り当てます。
このように,通常は,最終セグメント以外のセグメントの空き領域(行の削除によって発生した空き領域)を利用しません。このため,行の削除が頻繁に発生すると,時間が経過するに連れて表データの格納効率が悪くなります。
表データの格納効率を上げるには,セグメントの再利用を設定します。セグメントの再利用を設定すると,最終セグメントに新規ページを割り当てる空き領域がない場合,新規セグメントを確保しないで,確保済みセグメントから空きページ(未使用ページまたは空きがある使用中ページ)を探し,そのページに表データを格納します。
表データの格納効率を重視する場合は,セグメントの再利用を検討してください。格納効率よりも性能を重視する場合は,セグメントの再利用は行わないでください。
セグメントの再利用を設定するには,CREATE TABLE文のSEGMENT REUSE句にセグメントの再利用契機を指定します。
セグメントの再利用の概要を次の図に示します。
図3-2 セグメントの再利用の概要
データの格納効率を重視する場合に,セグメントの再利用を行ってください。
例えば,行の削除が多く発生し,最終セグメント以外に空き領域が多く発生するような場合にセグメントの再利用を行うと,データの格納効率の面で効果が期待できます。
セグメントの再利用を設定するには,CREATE TABLE文のSEGMENT REUSE句で1回目のセグメントの再利用契機と2回目以降のセグメントの再利用契機を指定します。
SEGMENT REUSE句の指定例を次に示します。
このように指定した場合,セグメントの再利用契機は,セグメント数が4,6(4+2=6),8(4+2+2=8),…のときとなります。
行の挿入や更新は頻繁に行うが,行の削除はあまり行わない表の場合は,空き領域があまり発生しません。そのため,セグメントの再利用を行っても,データの格納効率の面で効果が期待できません。
セグメントを再利用しない場合は,SEGMENT REUSE句にNOUSEを指定するか,またはSEGMENT REUSE句の指定を省略してください。