
テーブルをバッファすると、テーブルに格納されているデータレコードにアクセスする際のパフォーマンスが向上します。
テーブルバッファは、システム内の各アプリケーションサーバ上にローカルで存在します。このためバッファリングされたテーブルのデータには、アプリケーションサーバのバッファから直接アクセスすることができます。これにより、データベースアクセスの時間がかかるプロセスを回避することができます。
クライアント
/ サーバ環境ではバッファリングは特に重要です。その理由は、ネットワークを通じてテーブルにアクセスする時間は、ローカルにバッファリングされたテーブルにアクセスする時間よりはるかに長いからです。ネットワークの負荷にもよりますが、その倍率は 10 倍から 100 倍にもなります。 ( 複数のアプリケーションサーバがあるシステム ) よりもセントラルシステム ( アプリケーションサーバが 1 つだけのシステム ) の方がやや小さくなります。ただし、セントラルシステムでも、プロセス変更の回数を減らしてデータベースシステムによって提供されるバッファリングをさらに高度に行なうことで、パフォーマンスをさらに向上させることができます。バッファへの格納方法
プログラムがバッファリング対象テーブルのデータにアクセスすると、データベースインタフェースによりこのデータがアプリケーションサーバのバッファに格納されているかどうかを判断します。データがアプリケーションのバッファに格納されている場合は、データはバッファから直接読み込まれます。データがアプリケーションサーバのバッファに格納されていない場合は、データはデータベースから読み込まれ、バッファにロードされます。したがって、このデータに再度アクセスする場合はバッファが使用されます。
バッファタイプにより、アクセス時にバッファにロードされレコードを指定します。ローカルバッファの同期方式
バッファリング対象テーブルは、通常ではすべてのアプリケーションサーバで読み込まれ、ローカルバッファに格納されます。プログラムがアプリケーションサーバ内のテーブルに含まれるデータを変更すると、データベースインタフェースによってそのことがログテーブルに記録されます。その他のアプリケーションサーバでは、バッファはまだ元の状態のままです。このためプログラムが旧データを読み込むことがあります。
同期メカニズムは、通常 1 分から 2 分ごとの一定間隔で働きます。まずログテーブルが読み込まれ、他のサーバによって変更されたバッファの内容は無効化されます。次回のアクセスでは、無効化されたテーブルのデータはデータベースから直接読み込まれ、バッファ内で更新されます。置換
新規のデータのためにバッファにさらに領域が必要な場合は、最も長い時間アクセスされていないデータが置換されます。このデータは、バッファアクセスにより動的に定義される一定の時間に非同期で置換されます。データは、この時にバッファの空き領域が指定された値未満の場合、またはアクセスの質が十分でない場合のみ置換されます。
テーブルバッファのリセット
コマンドフィールドに
$TAB を入力して、対応するアプリケーションサーバのテーブルバッファをリセットすることができます。このバッファに格納されているすべてのデータが無効になります。このコマンドはバッファで不整合が発生した場合にのみ使用してください。大きいシステムでは、バッファが満たされるのに数時間かかる場合があります。この間はパフォーマンスが大幅に低下します。以下も参照してください。
ローカルバッファの同期化 バッファリングが必要なテーブル テーブルバッファの原理 データベースに直接行われるアクセス バッファの質の分析方法