並列検索機能で使用するメモリの見積り式について説明します。
ワーカープロセスは、データベースをスキャンするために一種のbackendプロセスとして動作します。そのため、backendプロセスと同じように共有メモリとローカルメモリを消費します。また、アプリケーションから依頼を受け付けたbackendプロセスとの間で検索結果の共有を行うためのメモリも消費します。これらのメモリ量は以下のように計算してください。
ポイント
共有メモリは、IPC資源の消費を伴います。付録Lで算出した計算値に、以下の共有メモリ量を加算してください。
並列検索機能で使用するメモリ量 = ワーカープロセスの共有メモリ量 + 情報交換用のメモリ量 + ワーカープロセスのローカルメモリ量
ワーカープロセスの共有メモリ量
ワーカープロセスの共有メモリ量= (並列プロセスごとに消費される基礎メモリ + max_locks_pre_transaction × ロック情報のサイズ) × max_parallel_workers
並列プロセスごとに消費される基礎メモリ = 1800バイト
ロック情報のサイズ = 272バイト
情報交換用のメモリ量
情報交換用のメモリ量 = 検索結果の共有のためのメモリ量 + 検索結果の格納バッファサイズ
検索結果の共有のためのメモリ量 = 50メガバイト
検索結果の格納バッファサイズ = 100メガバイト
ワーカープロセスのローカルメモリ量
ワーカープロセスのローカルメモリ量 = (並列プロセスごとに消費される基礎メモリ +work_mem) ×max_parallel_workers
並列プロセスごとに消費される基礎メモリ = 3メガバイト × max_parallel_workers