管理の手引き


データベース・バッファー・プールの管理

バッファー・プールとは、 データベース・ページ (表の行項目や索引項目が含まれる) を一時的に読み込んだり変更したりするための記憶域のことです。 バッファー・プールの目的は、 データベース・システムのパフォーマンスを改善することです。 ディスク上のデータよりメモリー上のデータの方が速くアクセスできます。 したがって、データベース・マネージャーがディスクとの間で読み書きする頻度が少なくなるほど、 パフォーマンスは向上します。

バッファー・プール (単数も複数も可) の構成は、 データベースに接続されるアプリケーションのデータ操作タスクの大部分 (ラージ・オブジェクトやロング・フィールド・データを除く) がここで行われることを考えると、 非常に重要なチューニング領域と言えます。

アプリケーションが表のある行に最初にアクセスしたときに、 データベース・マネージャーは、その行を含むページをバッファー・プールに入れます。 アプリケーションのいずれかが次にデータを要求した場合には、 バッファー・プールが最初に検査されます。 要求されたデータがバッファー・プールに保持されているページ上に見つかった場合は、 データベース・マネージャーはディスク装置からそのデータをリトリーブする必要はありません。 ディスク装置からデータをリトリーブする手間が省けると、パフォーマンスが速くなります。

バッファー・プールと関係ある記憶域は、 最初のアプリケーションがデータベースに接続したとき、 またはデータベースが明示的に活動化されたときに、すべて割り振られます。 バッファー・プールの恩恵に最初にあずかるのは、アプリケーションです。 アプリケーションがすべて切断されると、 バッファー・プールと関係ある記憶域は割り振り解除されます。

ページは、データベースがシャットダウンされるまで、あるいは、 あるページが占めるスペースが別のページによって要求されるまで、 バッファー・プール内に留まります。 別のページを入れるために選ばれるバッファー・プールのスペースは、 以下に示す基準を使用して選択されます。

注:変更されたページは、ディスクに書き出された後でも、 そのページが占めているスペースが他のページで必要とされない限り、 バッファー・プールから取り除かれることはありません。 上書きされるまでは、そのページのデータが必要ならば再度アクセスすることができます。

バッファー・プールの作成時、省略時ではページ・サイズは 4 KB です。 バッファー・プールを作成するとき、ページ・サイズは 4 KB、8 KB、16 KB または 32 KB のいずれかを選択して設定することができます。 いずれかのページ・サイズを使ってバッファー・プールが作成される場合、 関連付けられるのは同じページ・サイズで作成された表スペースだけです。 作成してしまうと、バッファー・プールのページ・サイズを変更することはできません。

バッファー・プール内のページには、以下のようなさまざまな属性があります。

バッファー・プール内の変更されたページのスペース占有率が chngpgs_thresh 構成パラメーターに指定した値を超えると、 ページがバッファー・プールからディスクに書き出される場合があります。 また、その場合、複数のページ・クリーナー・エージェントを組み込むように、 データベースを構成する必要も生じます。 これらのエージェントは、変更されたページをディスクに書き出して、 データベース・エージェントがバッファー・プール内に使用可能なスペースを見つけることができるようにします。

ページ・クリーナー・エージェントは、 もしこのエージェントがなかったらデータベース・エージェントが実行する必要がある入出力を実行します。 このエージェントを使用すると、 データベース・エージェントがページをディスクに書き込む間トランザクションが待機させられることがなくなるので、 アプリケーションの実行速度を速めることができます。 (ページ・クリーナー・エージェントは、 データベース・エージェントと並列に実行することができるため、 非同期ページ・クリーナー または非同期バッファー書き込み機能 と呼ばれることがあります。)

ページ・クリーナー・エージェントの数を変更する場合は、 num_iocleaners 構成パラメーターを使用します (省略時値を使うと、 1 つのページ・クリーナー・エージェントが作成されます)。 詳細については、非同期ページ・クリーナーの数 (num_iocleaners)を参照してください。 このパラメーターの値は、 1 からデータベース内の物理ディスクの数の間に設定します。 この数が大きければ大きいほど、 更新集中作業負荷を実行するときのパフォーマンスは良くなります。 これは、 非同期のデータ・ページ書き込みまたは索引ページ書き込みに関連したデータ・ページ書き込みまたは索引ページ書き込みが多い場合にも当てはまります。

さらに、ページをディスクに書き込んでおくと、 データベース・マネージャーがデータベース・ログ・ファイルを使用しなくても、 バッファー・プールの大部分をディスクから再作成することができるので、 システムの破壊が起こったとしてもデータベースの回復を迅速に行うことができるようになります。 結果として、回復が起きたときに読み取る必要のあるログのサイズが次の値を超えると、 ページ・クリーニングが要求されます。

   logfilsiz * softmax

ここで、

データベース・システム・モニターを使用すると、 回復中のログ読み取り時間を最小化するためにページ・クリーニングが要求される回数をトラックするのに役に立ちます。 詳細については、 システム・モニター 手引きおよび解説書 にある pool_lsn_gap_clns (生成されるバッファー・プール・ログ・スペース・クリーナー) モニター構成要素に関する説明を参照してください。

回復中に読み取らなければならないログのサイズは、ログ中の次の位置の間の差になります。

次の図は、 ページ・クリーナー・エージェントとデータベース・エージェントとの間でのバッファー・プールの管理作業の分担状態と、 データベース・エージェントがすべての入出力を行っている状態とを比較しています。

図 92. 非同期ページ・クリーナー. 「ダーティー」ページがディスクに書き出されます。


SQLD0CLN


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]