データベースバッファキャッシュ(LRUアルゴリズム)難易度 高無料
データベースバッファキャッシュにおけるブロックの管理方式に関する説明として、最も適切なものを選べ。(単一選択)
- Aバッファキャッシュは概ね LRU アルゴリズムで管理され、最近アクセスされていないクリーンなブロックが置き換え候補になる。ダーティブロックは DBWn によってディスクへ書き出されるまでは置き換え(再利用)の対象にならない
- Bダーティブロックであっても、最も長くアクセスされていなければ内容を破棄してそのまま新しいブロックで上書きされる
- Cバッファキャッシュ内のブロックはすべて先入れ先出し(FIFO)方式で管理され、最初に読み込まれたブロックから順に置き換えられる
- Dバッファキャッシュにはサイズ上限がなく、読み込まれたブロックは置き換えられることなく無制限にメモリへ蓄積され続ける
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済
解説
データベースバッファキャッシュ内のブロックは、大まかにLRU(Least Recently Used)アルゴリズムに基づくリストで管理される。
- ブロックが読み込まれ・アクセスされるとMRU 端(最近使用された側)に置かれ、しばらくアクセスされないブロックは徐々にLRU 端(最も使用されていない側)へ移動していく。
- 新しいブロックをキャッシュへ読み込む必要が生じると、サーバープロセスはLRU 端に近い、変更されていない(クリーンな)ブロックを優先して置き換え候補にする。
- ダーティブロック(変更済みで未反映)はそのままでは置き換えの対象にならず、置き換える前にDBWn によってディスクへ書き出されてから初めて解放・再利用される。
- 大きな全表スキャン(フルテーブルスキャン)で読み込まれたブロックは、通常のブロックとは異なる扱い(LRU リストの末端寄りに置かれる等)を受け、他の頻繁にアクセスされるブロックを不必要に追い出さないよう配慮される。
- Bダーティブロックはディスクへ未反映の変更を含むため、破棄すると変更が失われる。DBWn による書き出しが完了するまでは再利用できない。
- COracle のバッファキャッシュは FIFO ではなく LRU(最近の使用状況)に基づくアルゴリズムで管理される。
- Dバッファキャッシュのサイズは
DB_CACHE_SIZE等で有限に設定されており、上限に達すれば LRU に基づき古いブロックが置き換えられる。無制限ではない。
ひっかけ: 「ダーティブロックもそのまま LRU で追い出されて消える」という誤解(B)。ダーティブロックはDBWn がディスクへ書き出してからでないと再利用(上書き)できない点が核心。
AIが作成し、独立した検証を経た解説です(有資格者による監修は経ていません)