R3秋データベーススペシャリスト試験の復習を兼ねた個人的解説です。
問題本文と参考にした解答速報は、この記事の最下部を見てください。
ただし、2021/10/26執筆時点で公式の解答が出ていないので、完全に私オリジナルの解釈になります。
非公式の解答速報をもとにしていますが、間違っていたらごめんなさい(気づいたときに修正します)
なお、午後Ⅰ問2の設問1(1)はこちらからどうぞ→【令和3年度秋】R3データベーススペシャリスト試験 解説【午後Ⅰ問2設問1(1)】
午後Ⅰ 問2
データベースの実装に関する次の記述を読んで、設問1~3に答えよ。
※「次の記述」は省略。下部のリンクからPDF参照。
設問1 (2)
[参照処理の性能見積もり]について、(1)~(3)に答えよ。
(2)案1について、"加盟店"テーブルのデータバッファを増やすのはなぜか。
また、"オーソリ履歴"テーブルはデータバッファを増やさないのはなぜか。
アクセス経路に着目し、それぞれ理由を25字以内で述べよ。
案1 "加盟店"テーブルのデータバッファを増やしバッファヒット率100%にする。
解答例
加盟店
- ランダムアクセスによるヒット率を増やすため(21字/解答速報)
- 索引検索のバッファヒット率を向上させるため(21字/解答速報)
- アクセスヒット率を増やしディスクI/Oを減らすため(25字/個人的な回答)
オーソリ履歴
- 表探索によりページを順次読み込むため(18字/解答速報)
- 加盟店番号に索引がなく表探索となるから(19字/解答速報)
- 表探索により先頭から順にデータを読み込むため(22字/個人的な回答)
解説
問題文冒頭の[RDBMSの主な仕様]より、以下のことが読み取れます。
- アクセス経路は表探索 or 索引探索のどちらかであること。
- 表探索では、索引を使わずに先頭ページから順に全行を探索すること。
- 索引探索では、where句中の述語に適した索引によって絞り込んでから、表の行を読み込むこと。
また、「Fさんは、利用明細抽出処理の処理時間を、次のように見積もった。」の7つの文章から、次のことが読み取れます。
- 文章1.より、オーソリ履歴テーブルのアクセス経路が「表探索」であること。
- 文章4.より、利用明細抽出処理のSQLでは、オーソリ履歴テーブル1行ごとに加盟店テーブルの主キー索引を「索引探索」すること。
「データバッファ」とは、索引などの情報を保持するメモリ上の領域のことです(多分)。
加盟店テーブルは索引検索を行うため、バッファヒット率が高いほどディスクI/Oが減るため、処理時間が短縮できると考えられます。
よって、加盟店テーブルに対する**「アクセスヒット率を増やしディスクI/Oを減らすため」**的な文章が答えになると思います。
また、オーソリ履歴テーブルは表探索のため、データバッファの有無にかかわらず先頭から探索を行います。
そのため、データバッファを見る必要がないため、**「表探索のため先頭から順にデータを読み込むため」**的な文章が回答になると思います。
「なんで増やさなくていいの?」に対する問いなので、「だって、増やす意味ないもん」的な回答をすればよいかと・・・。
ところで、問題文の案1に
"加盟店"テーブルのデータバッファを増やしバッファヒット率100%にする。
とあるので、加盟店テーブルの回答として「バッファヒット率を向上させるため」はちょっとないんじゃないかなぁ・・・と個人的に思ってます。
バッファヒット率が増えたことで何がよくなるのか・・・までを書かないといけない気がするんですが、どうなんでしょう??
(でも「バッファヒット率が高いほどディスクI/Oが減る」なんてことは問題文から読み取れないから、そこまで言及しなくてもいいのかなぁ・・・)
参考情報
問題文はこちら
IPA 令和3年度秋期試験 データベーススペシャリスト試験 午後Ⅰ
参考にした解答速報はこちら
解答速報 令和3年度秋期試験|情報処理|資格の学校TAC[タック]
情報処理技術者試験 | 解答速報・自動採点サービス | IT技術者資格取得ならアイテック