事前取り出しを使用可能にするために、 データベース・マネージャーは入出力サーバー と呼ばれる別の制御スレッドを開始して、 ページの読み取りを実行します。 その結果、照会処理は 2 つの並列のアクティビティー、 つまりデータ処理 (CPU) とデータ・ページ入出力に分けられます。 入出力サーバーは、CPU の処理アクティビティーから事前取り出し要求が出るまで待機します。 この事前取り出し要求には、予想される必須データのための入出力記述が含まれます。 事前取り出しの目的に応じて、 データベース・マネージャーが事前取り出し要求を生成する時点と方法が決定されます。 (詳細については、順次事前取り出しについておよび リスト事前取り出しについてを参照してください。)
次の図は、データの事前取り出しを行ってバッファー・プールに入れる際に、 入出力サーバーがどのように使用されるかについて示しています。
![]() |
図 93 で示されているステップについて説明します。
num_ioservers 構成パラメーターを使用して、 十分な数の入出力サーバーを構成すると、 データの事前取り出しが適用される照会のパフォーマンスは大幅に向上します。 予備の入出力サーバーを構成しても、余分な入出力サーバーは使用されず、 そのメモリー・ページはページアウトされるので、パフォーマンスには影響ありません。 それぞれの入出力サーバー・プロセスには番号が付けられ、 利用可能なプロセスのうち番号が一番小さいプロセスが常にデータベース・マネージャーで使用されます。 結果として、番号が大きいプロセスは一度も使用されないことがあります。
構成する入出力サーバーの数を決定する際は、次の点を考慮するようにしてください。
並列入出力の機会を最大にするには、 num_ioservers をデータベース内の物理ディスクの数以上に設定します。
1 つの表スペースに対して複数のコンテナーが存在する状況では、 データベース・マネージャーは、並列入出力 を開始することができます。 並列入出力とは、データベース・マネージャーが複数の入出力サーバーを使用して、 単一照会の入出力要件を処理する機能のことです。 各入出力サーバーにはそれぞれ別個のコンテナーごとに入出力作業負荷が割り当てられるため、 複数のコンテナーを並列で読み取ることができます。 入出力を並列で実行すると、入出力スループットが大幅に向上することになります。
別個の入出力サーバーはコンテナーごとに作業負荷を処理しますが、 入出力を並列で実行できる入出力サーバーの実際の数は、 要求されたデータが伝搬される物理装置の数に制限されます。 これは、できるだけ多くの数の入出力サーバーが必要であるということも意味します。
並列入出力の開始および使用方法は、入出力を実行する理由によって決まります。
順次事前取り出しの場合、 事前取り出しサイズが表スペースのエクステント・サイズの倍数になっていると、 並列入出力が開始されます。 それぞれの事前取り出し要求は、エクステント境界に沿って、 複数の小さい要求に分割されます。 その後、これらの小さい要求は別々の入出力サーバーに割り当てられます。
リスト事前取り出しの場合、ページの各リストは、データ・ページが保管されるコンテナーに従って、 小さいリストに分割されます。 その後、これらの小さい要求は別々の入出力サーバーに割り当てられます。
データのバックアップまたは復元の場合、並列入出力要求の数は、 コンテナーの数と同じ最大値までに相当するエクステント・サイズに分割された、 バックアップ・バッファー・サイズと等しくなります。
データの復元の場合、並列入出力要求が開始され、 順次事前取り出しに使用されるのと同じ方法で分割されます。 データをバッファー・プールに復元する代わりに、 そのデータは復元バッファーからディスクに直接読み取られます。
データをロードする場合、LOAD コマンドの DISK_PARALLELISM オプションを使用すると、 入出力並列操作のレベルを指定することができます。 (指定しなかった場合は、 その表に関連するすべての表スペースの表スペース・コンテナーの累計値に基づく省略時値が使用されます。)
並列入出力で最適なパフォーマンスを得るには、以下を確認してください。
他のコンテナーより小さいコンテナーが 1 つまたは複数ある場合には、 並列事前取り出しが最適化される可能性が少なくなります。 たとえば、以下のようになります。
事前取り出しは高速で実行し、入出力能力を効率良く使用する必要があります。 事前取り出しが高速で行われるためには、事前取り出しサイズは大きくする必要があります。 事前取り出しサイズは、エクステント・サイズに表スペース・コンテナーの数を掛け合わせた値にするようにしてください。 理想的には、コンテナーは別々の物理ドライブに常駐するように構成する必要があります。
必要となる物理ドライブの数は、ドライブと入出力バスの速度と容量、 およびプロセッサーの速度によって変わります。
SMS 表スペースは、必要に応じて拡張されます。 この拡張は、省略時には 1 ページずつ行われます。 ただし、特定のワーク・ロード (たとえば、大量の挿入を行っている場合) では、 db2empfa ツールを使って、 ページ・グループ単位またはエクステント・グループ単位で表スペースを拡張するよう DB2 に指示することにより、 パフォーマンスを向上させることができます。 db2empfa ツールは、 sqllib ディレクトリーの bin サブディレクトリーにあります。 このツールを実行すると、multipage_alloc データベース構成パラメーターが YES に設定されます。 このツールの詳細については、コマンド解説書 を参照してください。
使用可能メモリーを最大限活用する別の方法については、 メモリーの拡張で説明されています。