3.5.2 セグメントの割り当てについて
インメモリデータバッファもグローバルバッファと同様に,共用メモリセグメント上に割り当てられます。
インメモリデータバッファに割り当てられる共用メモリセグメントを効率的に使用するために,複数のRDエリアをまとめてインメモリ化した場合は,インメモリ化を解除するときもまとめて解除してください。共用メモリセグメントの割り当ての仕組みを次に示す例を使って説明します。
- (例)
-
-
共用メモリセグメントの最大サイズ:1GB
-
RDエリア(RD01)のサイズ:1.5GB
-
RDエリア(RD02)のサイズ:0.4GB
-
RDエリア(RD03)のサイズ:0.7GB
この条件下での共用メモリセグメントの割り当ての仕組みを次の図に示します。
図3‒5 共用メモリセグメントの割り当ての仕組み -
- [説明]
-
-
RD01とRD02をまとめてインメモリ化し,それとは別にRD03をインメモリ化しました。
RD01のインメモリデータバッファはセグメント1およびセグメント2に割り当てられます。RD02のインメモリデータバッファはRD01と同じセグメント2に割り当てられます。
RD03のインメモリデータバッファはRD01,RD02とは別のセグメント(セグメント3)に割り当てられます。
-
RD01のインメモリ化を解除すると,セグメント1は解放されて利用できますが,セグメント2のRD01のインメモリデータバッファに割り当てられた領域は解放されません。そのため,このメモリ領域がむだになります。
-
RD01を再度インメモリ化すると,新しいセグメント(セグメント1とセグメント4)が割り当てられます。
- ポイント
-
メモリ領域がむだになるのを防ぐため,複数のRDエリアをまとめてインメモリ化した場合は,インメモリ化の解除もまとめて行うようにしてください。
-