- キャッシュに占める割合がDBSCacheThrの値以下のテーブルは小さなテーブルと見なされ、 データ ブロックが優先的にキャッシュされます。
- キャッシュに占める割合がDBSCacheThrの値より大きなテーブルは大きなテーブルと見なされ、 データ ブロックが優先的にキャッシュから除外されます。
DBSCacheThrは、DBSCacheCtrlがTRUEに設定されている場合にのみ有効です。
フィールド グループ
パフォーマンス
有効な範囲
0~100%
デフォルト
10%
変更の反映
DBS制御レコードへの書き込みが行なわれた後。変更時に実行中の操作には影響を与えません。
使用上の注意
メモリ(キャッシュ)からの読み取りはディスクからの読み取りよりはるかに高速なため、頻繁にアクセスされるデータ ブロックをキャッシュすると、システムのパフォーマンスが向上します。FSGキャッシュにはサイズの制限があるため、新たにアクセスされたデータをキャッシュするための領域が足りなくなると、古いデータ ブロックがキャッシュから削除(「エージ アウト」)されます。
一般に、参照テーブルは頻繁にアクセスされるため、 参照テーブルのデータをキャッシュするとシステムのパフォーマンスが目に見えて向上します。 参照テーブルは比較的小さいことが多いため、複数の参照テーブルのデータがキャッシュに収まります。
ただし、参照テーブルではない大きなテーブルのフル テーブル スキャンのデータをキャッシュすると、キャッシュがすぐにいっぱいになり、既存のキャッシュ データが置き換えられます。大きいテーブルのフル テーブル スキャンがあまり行われない場合(あまり行われないのが一般的です)、そのデータをキャッシュするメリットはほとんどありません。
DBSCacheThrを使用すると、大きなテーブルのデータをFSGキャッシュから除外して、小さなテーブルのデータができるだけ長くキャッシュに保持されるようにすることができます。
DBSCacheThrでは、FSGキャッシュに占める割合が何パーセント以下のときにテーブルのデータをキャッシュするかを指定します。 この値はしきい値であるため、サイズがDBSCacheThrの値以下のテーブルが優先的にキャッシュされ、 それより大きなテーブルは、ほとんどの場合、キャッシュされません。
考慮事項
- DBSCacheThrは、永久データのテーブルだけでなくスプール テーブルのキャッシュにも影響します。典型的なシステム作業で大きいスプール テーブルが生成される場合は、DBSCacheThrの値を小さくすると、スプール テーブルがキャッシュされなくなる可能性があります。スプール テーブルがキャッシュされなくなると、問合わせのパフォーマンスが低下します。
- 通常はDBSCacheThrによってキャッシュから除外される大きなテーブルで、複数の問合わせによって同時にフル テーブル スキャンが行われると、そのテーブルが同期テーブル スキャンの対象になる場合があります。この場合は、DBSCacheThrの設定に関係なく、大きなテーブルのデータがキャッシュされます。詳細については、SyncScanCacheThrを参照してください。
推奨事項
- DBSCacheThrを使用して、大きなテーブルの連続的な読み取りや書き込みによって他のデータがキャッシュから押し出されないようにします。DBSCacheThrは、頻繁にアクセスされる小さなテーブルとあまりアクセスされない大きなテーブルの境目に相当する値に設定します。この2種類のテーブルのサイズに開きがあると、この区別が容易になるため、理想的です。
- 中くらいのサイズのテーブルが頻繁にアクセスされる場合に、それらのテーブルがキャッシュされるようにDBSCacheThrを設定すると、それらのテーブルほど頻繁にアクセスされないそれらより小さいテーブルがキャッシュされて、システムのパフォーマンスに影響を与える可能性があります。DBSCacheThrの値を変更する場合は、実動システムに変更をコミットする前に、パフォーマンスへの影響を慎重に評価してください。
- DBSCacheThrはスプール テーブルのキャッシュにも影響するため、システムの典型的なワークロードで生成されるスプール テーブルがキャッシュから除外されない範囲で最小の値に設定します。そうすると、今日のほとんどの中~大規模のシステムでは、DBSCacheThrの設定が1%になります。ノードまたはAMPあたりのスプール テーブルの平均サイズがノードまたはAMPあたりのFSGキャッシュの1%より大きい場合は、DBSCacheThrをもっと大きな値に設定できます。
- DBSCacheThrのしきい値を計算するには、まず、優先的にキャッシュする必要がある、頻繁にアクセスされるテーブルのサイズを特定します。次に、そのテーブルがシステムのすべてのノードやAMPに均等に分散されると想定して、そのテーブルが各ノードやAMPのキャッシュに占める割合を特定します。その割合が、DBSCacheThrの設定値になります
(例: DBSCacheThrの設定 = ノードあたりのテーブルのサイズ/ノードあたりのFSGキャッシュ)。
例: DBSCacheThrフィールドと、頻繁にアクセスされる小さな参照テーブル
- 頻繁にアクセスされる小さい参照テーブルの典型的なサイズ = 100 MB (100万行、100バイト/行)
- システムのノード数 = 10
- Vantageはテーブル行をシステムのすべてのAMPとノードに均等に分散する: 1000MB / 10ノード=1ノードあたり100MB
RAM/ノード | FSGキャッシュ/ノード | DBSCacheThrの設定 |
---|---|---|
1GB | 500MB | 2% |
2GB | 1.5 GB | 1% |
4 GB | 3.5 GB | 1% |
これらのDBSCacheThrの設定がシステム キャッシュの決定に影響して、これらのテーブルが優先的にキャッシュされるようになります。
例: DBSCacheThrフィールドと、フル テーブル スキャンが含まれる大きなテーブル
- あまりアクセスされない大きなテーブルの典型的なサイズ = 1000 MB (1000万行、100バイト/行)
- システムのノード数 = 10
- Vantageはテーブル行をシステムのすべてのAMPとノードに均等に分散する: 1000MB/10ノード=100MB/ノード
RAM/ノード | FSGキャッシュ/ノード | DBSCacheThrの設定 |
---|---|---|
1GB | 500MB | 20%未満 |
2GB | 1.5 GB | 6%未満 |
4 GB | 3.5 GB | 2%未満 |
これらのDBSCacheThrの設定がシステム キャッシュの決定に影響して、これらのテーブルが優先的にキャッシュから除外されるようになります。