共有プールの初期設定を決定したら、メッセージ・バッファの追加メモリー要件を計算し、カーソル用に必要な追加領域の容量を決定する必要があります。
メッセージ・バッファを収容できるようにSHARED_POOL_SIZE
パラメータの値を増やす必要があります。メッセージ・バッファによって、問合せサーバー・プロセスが相互に通信できます。
Oracle Databaseでは、プロデューサ問合せサーバーとコンシューマ問合せサーバーの間の仮想接続ごとに一定数のバッファが使用されます。接続数は、DOPの増加に合せてその2乗の数に増加します。この理由から、パラレル実行で使用されるメモリーの最大容量は、システムで許可されるDOPの最大値によって制限されます。この値を制御するには、PARALLEL_MAX_SERVERS
パラメータを使用するか、ポリシーとプロファイルを使用します。
必要なメモリー容量を計算するには、次のいずれかの計算式を使用します。
SMPシステム:
mem in bytes = (3 x size x users x groups x connections)
Oracle Real Application ClustersおよびMPPシステム:
mem in bytes = ((3 x local) + (2 x remote)) x (size x users x groups) / instances
各インスタンスで、この式で計算されたメモリーが使用されます。
各項目の意味は次のとおりです。
SIZE
= PARALLEL_EXECUTION_MESSAGE_SIZE
USERS
= DOPが最適な場合に実行が予想される同時パラレル実行ユーザー数
GROUPS
= 各問合せで使用される問合せサーバー・プロセス・グループ数
単純なSQL文で必要になるのは1グループのみです。ただし、問合せに関連する副問合せがパラレルで処理される場合、Oracle Databaseはもう1つの問合せサーバー・プロセス・グループを使用します。
CONNECTIONS
= (DOP2 + 2 x DOP)
システムがクラスタまたはMPPの場合は、インスタンス数を考慮する必要があります。インスタンス数によってDOPが増加するためです。つまり、2つのインスタンス・クラスタでDOPを4にすると、結果としてDOPが8になります。控えめな見積りとして、初期値にはPARALLEL_MAX_SERVERS
とインスタンス数を掛けて4で割った値を使用することをお薦めします。
LOCAL
= CONNECTIONS
/INSTANCES
REMOTE
= CONNECTIONS
- LOCAL
共有プールの元の設定にこの容量を追加します。ただし、これらのメモリー構造いずれかの値を設定する前に、次の項で説明するカーソル用の追加メモリーも考慮する必要があります。