スケーラブルデータベースサーバ HiRDB Version 8 システム導入・設計ガイド(Windows(R)用)
11.8.3 UAPがアクセスするバイナリデータのLRU管理抑止設定
サイズの大きなバイナリデータを大量にアクセスするUAPを実行する場合,バイナリデータがグローバルバッファにキャッシュされると,グローバルバッファにキャッシュされた直近の内容がメモリから追い出され,性能が一時的に低下することがあります。このとき,バイナリデータのアクセス頻度が低い場合は,バイナリデータの分岐行ページのLRU管理だけを抑止することで,性能の低下を回避できます。
- 参考
- LRU管理を抑止できるのはUAPからのアクセスだけです。コマンドやユティリティからのアクセスの場合は,LRU管理が行われます。ただし,次のコマンドはLRU管理が抑止されます。
- プラグインが提供するコマンド
- pddbst
-bオプションを指定してLRU管理を抑止できます。
- また,次のコマンドの場合,LRU管理は抑止できませんが,グローバルバッファにキャッシュされた直近の内容がメモリから追い出されることを回避できます。
- pdload,pdrorg,pdrbal
-nオプションを指定してローカルバッファを使用すると,グローバルバッファから基本行内のデータが追い出されるのを回避できます。
- pdpgbfon
-bオプションを省略すると,バイナリデータの分岐行ページをアクセスしません。
- <この項の構成>
- (1) 適用基準
- (2) 適用の効果
- (3) 指定方法
- (4) 注意事項
次のすべての条件を満たす場合に適用することをお勧めします。
- BINARY型や,BINARY型の属性を含む抽象データ型,XML型などのサイズの大きなバイナリデータを含む表がある場合
- バイナリデータへのアクセスはまれである場合
- 注意
- 頻繁にバイナリデータをアクセスする場合には,適用しないでください。
バイナリデータが格納された分岐行はアクセス頻度に関係なく,最も古い時にアクセスしたページとしてグローバルバッファ上にキャッシュされます。そのため,分岐行ページが基本行ページより先にメモリから追い出されるようになり,基本行内のデータがメモリから追い出されなくなります。
システム共通定義のpd_dbbuff_binary_data_lruオペランドにNを指定します。
- 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での管理はできません。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.