11.8.3 UAPがアクセスするバイナリデータのLRU管理抑止設定
サイズの大きなバイナリデータを大量にアクセスするUAPを実行する場合,バイナリデータがグローバルバッファにキャッシュされると,グローバルバッファにキャッシュされた直近の内容がメモリから追い出され,性能が一時的に低下することがあります。このとき,バイナリデータのアクセス頻度が低い場合は,バイナリデータの分岐行ページのLRU管理だけを抑止することで,性能の低下を回避できます。
なお,この設定はBINARY型のバイナリデータの場合に有効です。BLOB型のバイナリデータの場合は無効となります。
- 参考
-
LRU管理を抑止できるのはUAPからのアクセスだけです。コマンドやユティリティからのアクセスの場合は,LRU管理が行われます。ただし,次のコマンドはLRU管理が抑止されます。
-
プラグインが提供するコマンド
-
pddbst
次のどちらかの条件に該当する場合,LRU管理が抑止されます。
・-sオプションを指定しない
・-sオプションと-bオプションを指定する
-
pdreclaim
globalbuffer_lru文の値がnoの場合,LRU管理が抑止されます。
また,次のコマンドの場合,LRU管理は抑止できませんが,グローバルバッファにキャッシュされた直近の内容がメモリから追い出されることを回避できます。
-
pdload,pdrorg,pdrbal
-nオプションを指定してローカルバッファを使用すると,グローバルバッファから基本行内のデータが追い出されるのを回避できます。
-
pdpgbfon
-bオプションを省略すると,バイナリデータの分岐行ページをアクセスしません。
-
(1) 適用基準
次のすべての条件を満たす場合に適用することをお勧めします。
-
BINARY型や,BINARY型の属性を含む抽象データ型,XML型などのサイズの大きなバイナリデータを含む表がある場合
-
バイナリデータへのアクセスはまれである場合
- 注意事項
-
頻繁にバイナリデータをアクセスする場合には,適用しないでください。
(2) 適用の効果
バイナリデータが格納された分岐行はアクセス頻度に関係なく,最も古い時にアクセスしたページとしてグローバルバッファ上にキャッシュされます。そのため,分岐行ページが基本行ページより先にメモリから追い出されるようになり,基本行内のデータがメモリから追い出されなくなります。
(3) 指定方法
システム共通定義のpd_dbbuff_binary_data_lruオペランドにNを指定します。
(4) 注意事項
-
LRU管理を抑止した場合,UAPがアクセスするバイナリデータの分岐行ページは,アクセス頻度に関係なく,バッファ不足が発生するとメモリからの追い出し対象となります。そのため,バイナリデータの分岐行をアクセスするUAPはバッファヒット率の低下に伴う入出力回数の増加によって,レスポンス性能が低下することがあります。
-
UAPは1〜4面のバッファを同時に確保します。そのため,LRU管理を抑止する設定をした場合でも,UAPごとにグローバルバッファにキャッシュされているページの中で1〜4ページはキャッシュから追い出されるおそれがあります。
-
LRU管理を抑止した場合,バイナリデータの分岐行ページの更新を行うUAPを実行するときにDBへの書き込み回数が多く,ログ出力契機が頻繁に発生します。そのため,LRU管理を抑止しない場合に比べて,出力されるログ量が多くなります。容量が不足しないように次のようにしてください。
-
システムログファイルの容量を再度見積もる
-
ログレスモードで実行できる場合,クライアント環境定義のPDDBLOGにNOを指定する
LRU管理を抑止する場合のログ量は,次に示す計算式で求めます。なお,pd_log_rec_lengオペランドの指定値を1024にすると,LRU管理を抑止する場合に出力されるログ量を最小に抑えられます。
バイナリデータをアクセスするUAPの更新GET数※×pd_log_rec_lengオペランドの値
- 注※
-
更新GET数は,UAP統計レポートのDIDUCの値,又はUAPに関する統計情報のDIDUCの値で確認できます。
-
-
LRU管理を抑止するUAPでも,ロールバックが発生した場合はLRU管理されることがあります。LRU管理されるかどうかはロールバックのタイミングによって次のように異なります。
ロールバックのタイミング
LRU管理されるかどうか
SQLでタイミングを定義する場合
制御系SQLのROLLBACK文を指定して,ROLLBACK文が実行される直前のコミット時点までロールバックされるとき
LRU管理は抑止されます。
HiRDBによって自動的にロールバックされる場合
SQL実行時に処理が続行できなくなり,HiRDBによって直前のコミット時点まで暗黙的にロールバックされるとき
LRU管理は抑止されます。
UAPの異常終了時にHiRDBによって直前のコミット時点までロールバックされるとき
LRU管理が行われます。
ディレードリランによってロールバックされるとき
LRU管理が行われます。
-
この機能を適用した場合,無条件にpd_dbbuff_lru_optionオペランドにMIXを仮定します。そのため,参照バッファ及び更新バッファの独立したLRUでの管理はできません。