12.8.2 UAPごとのLRU管理抑止設定
OLTP環境で,UAPの大量検索や大量更新によってグローバルバッファにキャッシュされた直近の内容がメモリから追い出され,OLTP性能を一時的に低下させてしまうことがあります。このとき,大量検索や大量更新をするUAPを特定できるのであれば,UAPごとにLRU管理を抑止する設定をすることで,OLTP性能の低下を回避できます。
- 参考
- LRU管理を抑止できるのはUAPからのアクセスだけです。コマンドやユティリティからのアクセスの場合は,LRU管理が行われます。ただし,次のコマンドはLRU管理が抑止されます。
- pddbst
-bオプションを指定してLRU管理を抑止できます。
- <この項の構成>
- (1) 適用基準
- (2) 適用の効果
- (3) 指定方法
- (4) 注意事項
(1) 適用基準
OLTP環境で,グローバルバッファを使用して大量検索や大量更新をするUAPを実行する場合に適用することをお勧めします。
(2) 適用の効果
LRU管理を抑止したUAPがアクセスしたページはアクセス頻度に関係なく,最も古い時にアクセスしたページとしてグローバルバッファ上にキャッシュされます。そのため,LRU管理を適用したUAPがアクセスしたページより先にメモリから追い出されるようになり,LRU管理を適用したUAPがアクセスしたページはメモリから追い出されなくなります。ただし,LRU管理を抑止するUAPとLRU管理を抑止しないUAPが同じページにアクセスする場合,そのページはLRU管理されます。
(3) 指定方法
クライアント環境定義のPDDBBUFLRUオペランドにNOを指定します。
(4) 注意事項
- LRU管理を抑止するUAPがアクセスしたページは,アクセス頻度に関係なく,バッファ不足が発生すると,メモリからの追い出し対象となります。そのため,LRU管理を抑止するUAPはバッファヒット率の低下に伴う入出力回数の増加によって,レスポンス性能が低下することがあります。
- UAPは1~4面のバッファを同時に確保します。そのため,LRU管理を抑止する設定をした場合でも,UAPごとにグローバルバッファにキャッシュされているページの中で1~4ページはキャッシュから追い出されるおそれがあります。
- 更新を行うUAPに対してLRU管理を抑止した場合,DBへの書き込み回数が多く,ログ出力契機が頻繁に発生するため,LRU管理を抑止しない場合に比べて,出力されるログ量が多くなります。容量が不足しないように次のようにしてください。
- システムログファイルの容量を再度見積もりする
- ログレスモードで実行できる場合,クライアント環境定義のPDDBLOGにNOを指定する
LRU管理を抑止する場合のログ量は,次に示す計算式で求めます。なお,pd_log_rec_lengオペランドの指定値を1024にすると,LRU管理を抑止する場合に出力されるログ量を最小に抑えられます。
更新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管理が行われます。 |