リソース制限を決定するための初期化パラメータを設定できます。リソース制限を設定するパラメータを次で説明します。
関連項目: 初期化パラメータについては、『Oracle Databaseリファレンス』を参照してください。 |
このパラメータは、パラレルで実行されるSQL文がOracle RAC環境のシングル・インスタンスに制限されるかどうかを示します。このパラメータをTRUE
に設定することにより、問合せコーディネータが実行しているシングルOracle RACインスタンスのために処理されるパラレル・スレーブのスコープを制限できます。
PARALLEL_FORCE_LOCAL
パラメータの推奨値はFALSE
です。
PARALLEL_THREADS_PER_CPU x CPU_COUNT x concurrent_parallel_users x 5
この計算式では、1つのインスタンスでデフォルトの並列度で実行するconcurrent_parallel_users
に割り当てられる値は、メモリー管理設定とは関係ありません。自動メモリー管理が無効な場合(手動モード)、concurrent_parallel_users
の値は1です。PGA自動メモリー管理が有効な場合、concurrent_parallel_users
の値は2です。グローバル・メモリー管理またはSGAメモリー・ターゲットがPGA自動メモリー管理とともに使用される場合、concurrent_parallel_users
の値は4になります。
この計算式は、並列度(DOP)属性が高い表に対するパラレル問合せでは十分でない可能性があります。さらに高いDOPの問合せを実行する予定があるユーザーのばあいは、次のように値を設定します。
2 x DOP x NUMBER_OF_CONCURRENT_USERS
たとえば、この値を64に設定した場合、各問合せが2つのスレーブ・セットを使用し、各セットのDOPが8
とすると、4つのパラレル問合せを同時に実行できるようになります。
同時ユーザーの問合せサーバー・プロセスが多すぎると、メモリー競合(ページング)、I/O競合または過剰なコンテキストのスイッチングが発生することがあります。この競合により、パラレル実行が使用されなかった場合のレベルよりもシステム・スループットが低下する可能性があります。PARALLEL_MAX_SERVERS
値を増やすのは、それによって生成されるロードのための十分なメモリーおよびI/O帯域幅がシステムにある場合のみにしてください。
オペレーティング・システムのパフォーマンス・モニタリング・ツールを使用すると、メモリー、スワップ領域およびI/O帯域幅の空き状況を判別できます。CPUとディスク両方の実行キューの長さ、およびシステムのI/O処理のサービス時間を調べます。プロセスを追加する場合は、システムに十分なスワップ領域があることを確認します。問合せサーバー・プロセスの総数を制限すると、パラレル操作を実行できる同時ユーザー数が制限されることがありますが、システム・スループットは安定するようになります。
ユーザーに対してリソース・コンシューマ・グループを設定することで、所定のユーザーが使用可能な並列処理の量を制限できます。これは、1ユーザーまたは1ユーザー・グループが使用できる、セッション数、同時ログオンおよびパラレル・プロセス数を制限するために行います。
パラレル実行文を処理する各問合せサーバー・プロセスは、セッションIDを使用してログオンしています。各プロセスは、ユーザーの同時セッションの制限に対してカウントされます。たとえば、あるユーザーが使用できるパラレル実行プロセスを10個に制限するには、ユーザーの制限を11に設定します。1プロセスがパラレル実行コーディネータ用、その他の10プロセスが2セットの問合せサーバーを構成します。こうすると、パラレル実行コーディネータが1セッション、パラレル実行プロセスが10セッションを使用できます。
ユーザー・プロファイルによるリソース管理の詳細は『Oracle Database管理者ガイド』、GV$
ビューの問合せの詳細は『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。
このパラメータを使用すると、ユーザーは使用中のアプリケーションに応じた許容DOPを待機することができます。PARALLEL_MIN_PERCENT
パラメータの推奨値は0です。
このパラメータを0以外の値に設定すると、リクエストされたDOPがその時点でシステムによって実現されない場合、Oracle Databaseがエラーを返します。たとえば、PARALLEL_MIN_PERCENT
を50(50パーセント)に設定したときに、マルチユーザー問合せ調整アルゴリズムまたはリソース制限によってDOPが50パーセントを超えて低減されると、Oracle DatabaseによってORA-12827
が返されます。次に例を示します。
SELECT /*+ FULL(e) PARALLEL(e, 8) */ d.department_id, SUM(SALARY) FROM employees e, departments d WHERE e.department_id = d.department_id GROUP BY d.department_id ORDER BY d.department_id;
Oracle Databaseから次のメッセージが返されます。
ORA-12827: insufficient parallel query slaves available
このパラメータは、1つのインスタンスで、パラレル操作のために起動および予約するプロセス数を指定します。構文は次のとおりです。
PARALLEL_MIN_SERVERS=n
n変数は、パラレル操作のために起動して保持しておくプロセス数です。
PARALLEL_MIN_SERVERS
の設定により、メモリー使用量と起動コストのバランスを保つことができます。PARALLEL_MIN_SERVERS
を使用して起動されるプロセスは、データベースが停止されるまで終了しません。これによって、問合せが発行されるときには、多くの場合、プロセスが使用可能になっています。
このパラメータは、文が自動並列度の対象とみなされるまでの最小実行時間を指定します。デフォルトでは、この値は30秒です。自動並列度は、PARALLEL_DEGREE_POLICY
がAUTO
またはLIMITED
に設定されている場合のみ有効になります。構文は次のとおりです。
PARALLEL_MIN_TIME_THRESHOLD = { AUTO | integer }
デフォルトはAUTO
です。
このパラメータは、パラレル文のキューイングが使用されるまでにパラレル文を実行できるパラレル・サーバー・プロセスの数を指定します。デフォルト値は次のとおりです。
PARALLEL_THREADS_PER_CPU * CPU_COUNT * concurrent_parallel_users * 2
この計算式では、1つのインスタンスでデフォルトの並列度で実行するconcurrent_parallel_users
に割り当てられる値は、メモリー管理設定とは関係ありません。自動メモリー管理が無効な場合(手動モード)、concurrent_parallel_users
の値は1です。PGA自動メモリー管理が有効な場合、concurrent_parallel_users
の値は2です。グローバル・メモリー管理またはSGAメモリー・ターゲットがPGA自動メモリー管理とともに使用される場合、concurrent_parallel_users
の値は4になります。
PARALLEL_DEGREE_POLICY
がAUTO
に設定されていると、システムで現在使用されているパラレル・プロセスの数がPARALLEL_SERVERS_TARGET
以上の場合、パラレル実行の必要な文はキューに入れられます。これはシステムで許可されているパラレル・サーバー・プロセスの最大数ではありません(それはPARALLEL_MAX_SERVERS
によって制御されます)。ただし、PARALLEL_SERVERS_TARGET
およびパラレル文のキューイングを使用すると、パラレル実行の必要なそれぞれの文が必要なパラレル・サーバー・リソースに割り当てられ、パラレル・サーバー・プロセスの過多によるフラッドを防止できます。
パラレル実行では、シリアルSQL実行で必要なメモリー・リソースに加えてさらにメモリー・リソースが必要です。追加のメモリーは、問合せサーバー・プロセスと問合せコーディネータ間での通信とデータの受渡しに使用されます。
Oracle Databaseによって、共有プールから問合せサーバー・プロセスにメモリーが割り当てられます。次のように共有プールをチューニングします。
共有プールの他のクライアント(共有カーソルやストアド・プロシージャなど)を考慮します。
大きな値ではマルチユーザー・システムでのパフォーマンスが向上しますが、小さな値ではメモリー使用量が減ることに注意します。
その後、パラレル実行で使用されるバッファ数を監視し、shared
pool
PX
msg
pool
と、ビューV$PX_PROCESS_SYSSTAT
の出力に示されている現在の最高水位標を比較します。
注意: 使用可能な十分なメモリーがない場合は、エラー・メッセージ12853(「PXバッファのメモリーが不足しています: 現在はstringKBですが、最大stringKBが必要です」)が生成されます。これは、PXバッファのためのSGAメモリーが十分でない場合に発生します。少なくとも(MAX - CURRENT )バイトを追加するようにSGAメモリーを再構成する必要があります。 |
デフォルトでは、Oracle Databaseはパラレル実行バッファを共有プールから割り当てます。
Oracle Databaseで起動時に次のエラーが表示された場合、SHARED_POOL_SIZE
の値を、データベースが起動できるように十分に下げる必要があります。
ORA-27102: out of memory SVR4 Error: 12: Not enough space
SHARED_POOL_SIZE
の値を下げた後で、次のエラーが発生する場合があります。
ORA-04031: unable to allocate 16084 bytes of shared memory ("SHARED pool","unknown object","SHARED pool heap","PX msg pool")
その場合は、次の問合せを実行して、Oracle Databaseが16,084バイトを割り当てられなかった理由を判別します。
SELECT NAME, SUM(BYTES) FROM V$SGASTAT WHERE POOL='SHARED POOL' GROUP BY ROLLUP (NAME);
出力は次のようになります。
NAME SUM(BYTES) -------------------------- ---------- PX msg pool 1474572 free memory 562132 2036704
SHARED_POOL_SIZE
を指定したときに、保持するよう指定したメモリー容量がプールよりも大きい場合、Oracle Databaseでは、取得できるメモリーのすべてを割り当てません。一部の領域が残されます。問合せが実行されるとき、Oracle Databaseは必要なメモリーを取得しようとします。Oracle Databaseは560KBを使用し、失敗するとさらに16KBが必要になります。このエラーでは、必要とされた容量の累積は報告されません。必要な追加メモリー容量を判別する最適な方法としては、「メッセージ・バッファのメモリー追加」の式を使用します。
この例の問題を解決するには、SHARED_POOL_SIZE
の値を増やします。サンプル出力に表示されるように、SHARED_POOL_SIZE
は約2MBです。使用可能なメモリー容量によって異なりますが、SHARED_POOL_SIZE
の値を4MBに増やしてから、データベースの起動を試行してください。Oracle Databaseで引き続きORA-4031
メッセージが表示される場合は、起動が成功するまでSHARED_POOL_SIZE
の値を次第に増やします。
共有プールの初期設定を決定したら、メッセージ・バッファの追加メモリー要件を計算し、カーソル用に必要な追加領域の容量を決定する必要があります。
メッセージ・バッファを収容できるように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
共有プールの元の設定にこの容量を追加します。ただし、これらのメモリー構造いずれかの値を設定する前に、次の項で説明するカーソル用の追加メモリーも考慮する必要があります。
この項の計算式はあくまで開始値を設定するためのものです。自動チューニングと手動チューニングのどちらを使用するにしても、実行時の使用状況を監視して、メモリーのサイズが大きすぎないか、小さすぎないかを確認する必要があります。正しいメモリー・サイズを確認するため、次の問合せを使用して共有プールをチューニングします。
SELECT POOL, NAME, SUM(BYTES) FROM V$SGASTAT WHERE POOL LIKE '%pool%' GROUP BY ROLLUP (POOL, NAME);
出力は次のようになります。
POOL NAME SUM(BYTES) ----------- -------------------------- ---------- shared pool Checkpoint queue 38496 shared pool KGFF heap 1964 shared pool KGK heap 4372 shared pool KQLS heap 1134432 shared pool LRMPD SGA Table 23856 shared pool PLS non-lib hp 2096 shared pool PX subheap 186828 shared pool SYSTEM PARAMETERS 55756 shared pool State objects 3907808 shared pool character set memory 30260 shared pool db_block_buffers 200000 shared pool db_block_hash_buckets 33132 shared pool db_files 122984 shared pool db_handles 52416 shared pool dictionary cache 198216 shared pool dlm shared memory 5387924 shared pool event statistics per sess 264768 shared pool fixed allocation callback 1376 shared pool free memory 26329104 shared pool gc_* 64000 shared pool latch nowait fails or sle 34944 shared pool library cache 2176808 shared pool log_buffer 24576 shared pool log_checkpoint_timeout 24700 shared pool long op statistics array 30240 shared pool message pool freequeue 116232 shared pool miscellaneous 267624 shared pool processes 76896 shared pool session param values 41424 shared pool sessions 170016 shared pool sql area 9549116 shared pool table columns 148104 shared pool trace_buffers_per_process 1476320 shared pool transactions 18480 shared pool trigger inform 24684 shared pool 52248968 90641768
出力に表示されたメモリー使用量を評価し、処理ニーズに基づいてSHARED_POOL_SIZE
の設定を変更します。
メモリー使用量の統計をさらに取得するには、次の問合せを実行します。
SELECT * FROM V$PX_PROCESS_SYSSTAT WHERE STATISTIC LIKE 'Buffers%';
出力は次のようになります。
STATISTIC VALUE ------------------- ----- Buffers Allocated 23225 Buffers Freed 23225 Buffers Current 0 Buffers HWM 3620
使用されたメモリー容量は、Buffers
Current
とBuffers
HWM
の統計に表示されます。バッファ数にPARALLEL_EXECUTION_MESSAGE_SIZE
の値を掛けた値(バイト数)を計算します。この最高水位標をパラレル実行メッセージ・プール・サイズと比較して、割当てメモリーが多すぎないかを判別します。たとえば、最初の出力で、px
msg
pool
に示されるラージ・プールの値は38,092,812すなわち38MBです。2番目の出力のBuffers
HWM
は3,620です。これにパラレル実行メッセージ・サイズの4,096を掛けると、14,827,520すなわち約15MBになります。この場合、最高水位標は容量の約40パーセントに達しています。
この項について検討する前に、『Oracle Databaseパフォーマンス・チューニング・ガイド』および『Oracle Database管理者ガイド』でMEMORY_TARGET
およびMEMORY_MAX_TARGET
初期化パラメータの説明を読むことをお薦めします。MEMORY_TARGET
によってSGAコンポーネントおよびPGAコンポーネントが自動チューニングされるため、PGA_AGGREGATE_TARGET
初期化パラメータを設定する必要はありません。
ここで説明するパラメータの最初のグループは、すべてのパラレル操作(特にパラレル実行)のメモリーとリソースの消費に影響します。このパラメータを次に示します。
パラメータの2つ目のサブセットについては、「パラレルDMLおよびパラレルDDLのリソース消費に影響するパラメータ」で説明しています。
リソース消費を制御するには、次の2つのレベルでメモリーを構成する必要があります。
データベース・レベル。データベース・システムがオペレーティング・システムの適切な容量のメモリーを使用できるようにします。
オペレーティング・システム・レベル(一貫性のため)。
プラットフォームによっては、使用可能な仮想メモリーの合計容量(全プロセスの合計)を制御するオペレーティング・システム・パラメータを設定する必要があります。
データ・ウェアハウス操作で使用されるメモリーの大きな部分は(OLTPと比べて)動的に使用されます。このメモリーはプロセス・グローバル領域(PGA)から割り当てられ、プロセス・メモリーのサイズとプロセスの数はどちらも幅広い範囲で変化する可能性があります。そのような場合は、PGA_AGGREGATE_TARGET
初期化パラメータを使用して、プロセス・メモリーとプロセス数の両方を制御します。PGA_AGGREGATE_TARGET
とMEMORY_TARGET
を合せて明示的に設定すると、自動チューニングは行われますが、PGA_AGGREGATE_TARGET
が指定値未満になるようにチューニングされることはありません。
自動PGAメモリー管理を有効にすると、PGAメモリーの割当て方法が単純化されて強化されます。このモードでは、DBAによって明示的に設定されたPGAメモリー全体の目標に基づいて、Oracle DatabaseがPGAメモリーの作業領域専用部分のサイズを動的に調整します。自動PGAメモリー管理を有効にするには、PGA_AGGREGATE_TARGET
初期化パラメータを設定する必要があります。新しいインストールでは、PGA_AGGREGATE_TARGET
およびSGA_TARGET
は自動的にDatabase Configuration Assistant (DBCA)によって設定されます。MEMORY_TARGET
は0です。つまり、自動メモリー管理は無効になっています。これはEnterprise Managerの「メモリー・パラメータ」ページで有効にできます。したがって、集計PGAの自動チューニングはデフォルトで有効になっています。ただし、集計PGAは、MEMORY_TARGET
を0以外の値に設定して自動メモリー管理を有効にしないかぎり、増えることはありません。
様々なシナリオでのPGA_AGGREGATE_TARGET
の使用方法の詳細は、『Oracle Databaseパフォーマンス・チューニング・ガイド』を参照してください。
PARALLEL_EXECUTION_MESSAGE_SIZE
パラメータでは、パラレル実行メッセージで使用されるバッファのサイズを指定します。デフォルト値はオペレーティング・システムによって異なりますが、通常は16KBです。この値はほとんどのアプリケーションで適切です。
パラレルDMLおよびパラレルDDLのリソース消費に影響するパラメータを次に示します。
パラレルの挿入、更新および削除操作では、シリアルDML操作よりも多くのリソースが必要です。同じく、PARALLEL
CREATE
TABLE
... AS
SELECT
およびPARALLEL
CREATE
INDEX
でも、より多くのリソースが必要となることがあります。このため、場合によっては、さらにいくつかの初期化パラメータの値を増やす必要があります。これらのパラメータは問合せのためのリソースには影響しません。
パラレルのDMLおよびDDLでは、各問合せサーバー・プロセスがトランザクションを開始します。パラレル実行コーディネータは2フェーズのコミット・プロトコルを使用してトランザクションをコミットします。このため、処理されるトランザクション数はDOPに応じて増加します。この結果、TRANSACTIONS
初期化パラメータの値を増やす必要が生じることがあります。
TRANSACTIONS
パラメータでは、同時トランザクションの最大数を指定します。デフォルトでは並列処理は想定されていません。たとえば、DOPが20の場合は、追加の新しいサーバー・トランザクション20(サーバー・セットが2つの場合は40)とコーディネータ・トランザクション1が生成されます。この場合、トランザクションが同一インスタンスで実行されているときは、TRANSACTIONS
に21(または41)を加えた値に増やします。このパラメータを設定しない場合は、Oracle Databaseによって値が1.1 x SESSIONS
になるように設定されます。サーバー管理のUNDOを使用している場合、この説明は適用されません。
コミットされていないパラレルDMLまたはパラレルDDLトランザクションがあるときにシステムで障害が発生した場合に、FAST_START_PARALLEL_ROLLBACK
パラメータを使用して、起動時のトランザクションのリカバリを高速化できます。
このパラメータは、異常終了したトランザクションをリカバリするときに使用されるDOPを制御します。異常終了したトランザクションとは、システム障害の前にアクティブだったトランザクションです。デフォルトでは、最大でCPU_COUNT
パラメータ値の2倍になるようにDOPが選択されます。
このデフォルトDOPが不十分な場合は、パラメータをHIGH
に設定します。これにより、最大DOPがCPU_COUNT
パラメータの4倍になります。この機能はデフォルトで使用できます。
このパラメータでは、DMLロックの最大数を指定します。この値は、すべてのユーザーが参照するすべての表でのロック数の合計と等しくなるように指定する必要があります。パラレルDML操作のロック要件は、シリアルDMLの要件と大きく異なります。パラレルDMLで保持されるブロックはかなり多いため、DML_LOCKS
パラメータの値を倍量に増やす必要があります。
注意: ターゲット表の表ロックが無効になっている場合、パラレルDML操作は実行されません。 |
表8-4に、様々なパラレルDML文ごとにコーディネータとパラレル実行サーバー・プロセスによって取得されるロックの種類を示します。この情報を使用して、このようなパラメータで必要な値を決定することができます。
表8-4 パラレルDML文で取得されるロック
文のタイプ | コーディネータ・プロセスが取得するロック | 各パラレル実行サーバーが取得するロック |
---|---|---|
パーティション表に対するパラレル |
1つの表ロックSX プルーニングされたパーティションまたはサブパーティション当たり1つのパーティション・ロックX |
1つの表ロックSX 問合せサーバー・プロセスが所有するプルーニングされたパーティションまたはサブパーティション当たり1つのパーティション・ロック 問合せサーバー・プロセスが所有するプルーニングされたパーティションまたはサブパーティション当たり1つのパーティション待機ロックS |
パーティション表に対するパラレル行移行 |
1つの表ロックSX プルーニングされたパーティションまたはサブパーティション当たり1つのパーティション・ロックX 他のすべてのパーティションまたはサブパーティションの1つのパーティション・ロックSX |
1つの表ロックSX 問合せサーバー・プロセスが所有するプルーニングされたパーティションまたはサブパーティション当たり1つのパーティション・ロック 問合せサーバー・プロセスが所有するプルーニングされたパーティション当たり1つのパーティション待機ロックS 他のすべてのパーティションまたはサブパーティションの1つのパーティション・ロックSX |
パーティション表に対するパラレル |
1つの表ロックSX すべてのパーティションまたはサブパーティションのパーティション・ロックX |
1つの表ロックSX パーティションまたはサブパーティション当たり1つのパーティション・ロック パーティションまたはサブパーティション当たり1つのパーティション待機ロックS |
パーティション表に対するパラレル |
1つの表ロックSX 指定されたパーティションまたはサブパーティション当たり1つのパーティション・ロックX |
1つの表ロックSX 指定されたパーティションまたはサブパーティション当たり1つのパーティション・ロック 指定されたパーティションまたはサブパーティション当たり1つのパーティション待機ロックS |
非パーティション表に対するパラレル |
1つの表ロックX |
なし |
注意: 表、パーティションおよびパーティション待機のDMLロックはすべて、TMロックとしてV$LOCK ビューに表示されます。 |
DOPを100として実行する600のパーティションを含む表について検討します。すべてのパーティションが、行移行のないパラレルUPDATE
文またはDELETE
文に関連するとします。
コーディネータでは次のロックが取得されます。
1つの表ロックSX
600のパーティション・ロックX
サーバー・プロセス全体では次のロックが取得されます。
100の表ロックSX
600のパーティション・ロックNULL
600のパーティション待機ロックS
I/Oに影響するパラメータを次に示します。
これらのパラメータは、パラレル実行I/O操作の最適なパフォーマンスを確保するオプティマイザにも影響します。
このパラメータの推奨値は8KBまたは16KBです。
データベース・ブロック・サイズはデータベースを作成するときに設定します。新しいデータベースを作成する場合は、8KBまたは16KBの大きなブロック・サイズを使用します。
このパラメータでは、オペレーティング・システムのREAD
コール1回で読み取られるデータベース・ブロック数を決定します。このリリースでは、このパラメータのデフォルト値は効率よく実行できる最大I/Oサイズに対応する値です。最大I/Oサイズの値はプラットフォームによって異なり、ほとんどのプラットフォームで1MBです。DB_FILE_MULTIBLOCK_READ_COUNT
に設定した値が高すぎる場合、データベースの起動時に、オペレーティング・システムによって許容範囲内の最高レベルまで値が下げられます。
これら2つのパラメータの推奨値はTRUE
です。
これらのパラメータを使用して、オペレーティング・システムの非同期I/O機能の有効と無効を切り替えます。これによって、問合せサーバー・プロセスが、表スキャンを実行するときにI/Oリクエストと処理を同時に行うことができます。オペレーティング・システムで非同期I/Oがサポートされる場合は、これらのパラメータをデフォルト値のTRUE
にしておきます。図8-6に、非同期読取りの仕組みを示します。
非同期操作が現在サポートされているのは、パラレル表スキャン、ハッシュ結合、ソートおよびシリアル表スキャンです。ただし、この機能にはオペレーティング・システム固有の構成が必要となることがあり、すべてのプラットフォームでサポートされるとはかぎりません。