ファイル・システム・キャッシングを使用しない表スペース

UNIX、 Linux®、および Windows で非バッファー入出力を有効または無効にする推奨される方法は、表スペース・レベルです。

この方式では、特定の表スペースにバッファリングのない I/O を使用可能または使用不可にすると同時に、データベースの物理レイアウトに依存することを避けることができます。 また、データベース・マネージャーが、各ファイルで最適な I/O (バッファリングありまたはバッファリングなし) を判別することができます。

バッファリングのない I/O を使用可能にし、特定の表スペースでファイル・キャッシングを使用不可にするには、NO FILE SYSTEM CACHING 節を使用します。 バッファリングのない I/O が使用可能にされている場合、データベース・マネージャーはプラットフォームに基づいて、直接 I/O (DIO) と並行 I/O (CIO) のどちらを使用するかを自動的に判別します。 CIO の方がパフォーマンスが向上するため、データベース・マネージャーは CIO がサポートされていれば CIO を使用します。 どちらを使用するかを指定するユーザー・インターフェースはありません。

バッファリングのない I/O から最大の効果を引き出すため、バッファー・プールのサイズを増やす必要がある可能性もあります。 ただし、セルフチューニング・メモリー・マネージャーが使用可能にされ、バッファー・プール・サイズが AUTOMATIC に設定されている場合、データベース・マネージャーはバッファー・プール・サイズを最適のパフォーマンスにセルフチューニングします。 このフィーチャーは、バージョン 9 より前は使用できなかったことに注意してください。

ファイル・システム・キャッシングを使用不可または使用可能にするには、CREATE TABLESPACE または ALTER TABLESPACE ステートメントで NO FILE SYSTEM CACHING または FILE SYSTEM CACHING 節を指定します。 デフォルト設定は、どちらの節も指定されていない場合に使用されます。 ALTER TABLESPACE の場合、新しいキャッシング・ポリシーを有効にするためにデータベースへの既存の接続を終了する必要があります。
注: 属性がデフォルトから FILE SYSTEM CACHING または NO FILE SYSTEM CACHING のいずれかに変更された場合、それをデフォルトに戻すメカニズムはありません。

ファイル・システム・キャッシングを使用可能および使用不可にするこの方式は、表スペース・レベルで I/O モード (バッファリングありまたはバッファリングなし) を制御することを可能にします。

ファイル・システム・キャッシングが使用可能になっているかどうかを判別するには、MON_GET_TABLESPACE 表の表スペースの fs_caching モニター・エレメントの値を照会します。

UNIX、 Linux、および Windows で非バッファー入出力を有効/無効にするための代替方法
一部の UNIX プラットフォームでは、MOUNT オプションを使用して、ファイル・システム・レベルでファイル・システム・キャッシングを使用不可にすることができます。 詳しくは、オペレーティング・システムの資料を参照してください。 ただし、表スペース・レベルとファイル・システム・レベルでファイル・システム・キャッシングを使用できないようにした場合の違いを理解することが重要です。 表スペース・レベルでは、ファイルを開く際にファイル・システム・キャッシングを使用するかどうかをデータベース・マネージャーが制御します。 ファイル・システム・レベルでは、特定のファイル・システムに存在するすべてのファイルが、 ファイル・システム・キャッシングなしで開かれます。 AIX® などの一部のプラットフォームでは、読み取りおよび書き込みアクセスのシリアライゼーションなど、この機能を使用する前に特定の要件があります。 データベース・マネージャーがこれらの要件に準拠していて、ターゲット・ファイル・システムにデータベース・マネージャーからのファイル以外のファイルが含まれている場合は、このフィーチャーを使用可能にする前に、要件についてオペレーティング・システムの資料を参照してください。
注: バージョン 8.1 FixPak 4 で導入された非推奨になったレジストリー変数 DB2_DIRECT_IOは、 AIX JFS2上のロング・フィールド・データ、ラージ・オブジェクト・データ、および TEMPORARY 表スペースを除き、すべての SMS コンテナーに対してファイル・システム・キャッシングを有効にしません。 バージョン 9.1 以降でこのレジストリー変数を設定することは、NO FILE SYSTEM CACHING 節を指定してすべての表スペース、SMS および DMS を変更することと等価です。 ただし、DB2_DIRECT_IO の使用は推奨されません。この変数は、今後のリリースで削除されます。 その代わりとして、表スペースのレベルで NO FILE SYSTEM CACHING を使用可能にしてください。
Windows で非バッファー入出力を有効/無効にするための代替方法
以前のリリースでは、パフォーマンス・レジストリー変数 DB2NTNOCACHE を使用して、すべての Db2® ファイルのファイル・システム・キャッシングを使用不可にし、バッファー・プールまたはソート・ヒープを増やすことができるようにデータベースに使用可能なメモリーを増やすことができました。 DB2NTNOCACHE と NO FILE SYSTEM CACHING 節を使用する場合の違いは、選択表スペースのキャッシングを使用不可にする機能です。 バージョン 9.5 からは、NO FILE SYSTEM CACHING がデフォルトとして使用されているため、FILE SYSTEM CACHING を明示的に指定しない限り、インスタンスに新規に作成された表スペースしか含まれない場合は、このレジストリー変数を設定してファイル・システム・キャッシングをインスタンス全体に渡って使用不可にする必要はなくなりました。
パフォーマンスの考慮事項
バッファリングのない I/O は、本来はパフォーマンス向上のために使用されます。 ただし場合によっては、小さいバッファー・プール・サイズと小さいファイル・システム・キャッシュの組み合わせによって (そればかりとは限りませんが)、パフォーマンスの低下が引き起こされることがあります。 パフォーマンスを改善するための提案を以下に示します。
  • セルフチューニング・メモリー・マネージャーが使用可能になっていない場合は、使用可能にし、ALTER BUFFERPOOL name SIZE AUTOMATIC を使用してバッファー・プール・サイズを自動に設定します。 これによって、データベース・マネージャーは、バッファー・プール・サイズを自己調整できます。
  • セルフチューニング・メモリー・マネージャーを使用可能にしない場合は、パフォーマンスが改善されるまで、10 または 20 パーセントずつバッファー・プール・サイズを大きくします。
  • セルフチューニング・メモリー・マネージャーを使用可能にしない場合は、ファイル・システム・キャッシングを使用するように表スペースを変更します。 これにより、バッファリングのない I/O が基本的に使用不可になり、コンテナー・アクセスはバッファー I/O に戻ります。
実動システムでこれを実装する前に、制御された環境でパフォーマンスの調整をテストしてください。
表スペース・コンテナー用にファイル・システムのファイルを使用するか、装置を使用するかを選択するときは、ファイル・システム・キャッシングについて考慮する必要があります。ファイル・システム・キャッシングは、次のように実行されます。
  • DMS ファイル・コンテナー (およびすべての SMS コンテナー) の場合、 オペレーティング・システムはファイル・システム・キャッシュ中のページをキャッシュすることがある (表スペースに NO FILESYSTEM CACHING が定義されていない場合)
  • DMS デバイス・コンテナー表スペースの場合、 オペレーティング・システムはファイル・システム・キャッシュ中のページをキャッシュしない