ページの先頭行へ戻る
Enterprise Postgres 14 SP1 導入ガイド(サーバ編)
FUJITSU Software

F.3 VCIで使用するメモリの見積り式

VCIで使用するメモリの見積り式について説明します。

使用メモリ量の概算は、次の式で見積もってください。

VCIで使用するメモリ量
 = データをメモリに格納するために必要なメモリ量 + 各種処理に必要なメモリ量

データをメモリに格納するために必要なメモリ

以下の式で見積もった容量を、ステーブルバッファ(shared_buffersの一部)上に確保してください。

データをメモリに格納するために必要なメモリ容量
 = (テーブル行数) × (一行あたりのバイト数) + (WOSサイズ)
一行あたりのバイト数
一行あたりのバイト数
 = (19 + (CREATE INDEX時に指定した列数) / 8 + (指定した列の行あたりのバイト数)) × 1.1

備考) 端数は切り上げてください。

WOSサイズ
WOSサイズ = (WOSの行数) / 185 × 8096

WOSの行数はINSERT, DELETEで1行ずつ、UPDATEで2行ずつ増えます。一方で、ROS制御デーモンによるROSへの変換時に52万行以下まで減ります。


各種処理に必要なメモリ

各種処理に必要なメモリ容量
 = 検索時にクエリごとに消費されるメモリ量
   + VCIのメンテナンス時に消費されるメモリ量
   + CREATE INDEX時に消費されるメモリ量
検索時にクエリごとに消費されるメモリ量
  • 並列検索時

    検索時に消費されるメモリ量
      = vci.shared_work_mem + (並列ワーカ数 + 1) × vci.maintenance_work_mem

    備考)インスタンス全体で、VCIが同時に利用する並列ワーカ数は、vci.max_parallel_degree以下になります。

  • 非並列検索時

    検索時に消費されるメモリ量
      = vci.max_local_ros + vci.maintenance_work_mem

注意

  • vci.shared_work_mem, vci.max_local_ros はLocal ROSの作成に利用します。Local ROSがこれらのサイズを超える場合はVCIを利用しない従来のプランによってクエリを実行します。

  • vci.maintenance_work_memは動的に確保するメモリです。設定値を超える場合はディスクの一時ファイルを利用して動作します。

VCIのメンテナンス時に消費されるメモリ量
VCIのメンテナンス時に消費されるメモリ
  = vci.maintenance_work_mem × vci.control_max_workers
CREATE INDEX時に消費されるメモリ量
CREATE INDEX時に消費されるメモリ = vci.maintenance_work_mem

注意

vci.maintenance_work_memは動的に確保するメモリです。設定値を超える場合はディスクの一時ファイルを利用して動作します。