DBデータベーススペシャリスト試験 午後Ⅰ
令和3年度秋期 データベーススペシャリスト 午後Ⅰ 問2
事例を読んで設問の答えを考えてから、解説のポイントとIPA公式の解答例・採点講評で確認しましょう。
問題






解き方のヒントを見る
前提をそろえて性能を比べる
性能を考えるときは、方式名や印象だけで判断せず、同じ前提・同じ処理範囲・同じ評価指標にそろえて、各案を公平に比較できる状態かを確認しましょう。
この問題で問われていること
各処理方式を比べる前提がそろっているかに注目し、対象となる処理の範囲、入力条件、評価する時間や資源の観点が同じ基準で扱われているかを丁寧に確認しましょう。
視点
性能評価では、処理の対象・前提条件・評価軸を切り分け、比較対象が同じ条件で整理されているかを確認することが重要です。
確認ポイント
- 比較する処理の範囲がそろっているか
- 入力条件や前提が同じ基準で整理されているか
- 性能を測る観点が一貫しているか
正解と解説を見る
解説
本問は、RDBMSのアクセス経路、バッファ、区分化、再編成、ログ出力を題材に、性能見積りと設計判断を問う問題です。
問題の全体像
カード決済量の増加を背景に、オーソリ履歴を対象とした参照・挿入・更新処理の性能改善を検討する。設問1は入れ子ループ結合の処理時間とバッファ効果、設問2は区分方式と区分キーの選択、設問3は更新処理を多重化した際のログのボトルネックを問う。
設問1(1)(a)
オーソリ履歴は480億行で、1ページ当たり20行なので、表探索で読むページ数は480億÷20=24億ページとなる。したがって[a]は2、400、000、000。
設問1(1)(b)
24億ページを1ページ4、000バイト、転送速度100Mバイト/秒で読む。24億×4、000÷100、000、000=96、000秒となり、[b]は96、000。
設問1(1)(c)
カード1、000万枚について、1カード・月当たり80回のオーソリがあり、対象月の結果行数は1、000万×80=8億行。したがって[c]は800、000、000。
設問1(1)(d)
内側の加盟店表は外側の結果行ごとに主キー索引で1行を検索する。外側の結果行数が8億行なので、読み込み回数も8億回となり、[d]は800、000、000。
設問1(1)(e)
索引は全てバッファヒットするが、加盟店表はバッファヒット率0%です。そのため各検索で表ページを読むものとして、同期読み込みページ数は8億ページとなり、[e]は800、000、000。
設問1(1)(f)
加盟店表の同期読み込みは8億ページで、1ページ1ミリ秒。8億ミリ秒を1、000で割ると800、000秒となり、[f]は800、000。
設問1(1)(g)
内側表の索引探索・結合CPU時間は、8億結果行×0.01ミリ秒=800万ミリ秒=8、000秒。したがって[g]は8、000。
設問1(1)(h)
外側表はCPU96、000秒と非同期読込み96、000秒が並行するため、処理時間は96、000秒。内側表はCPU8、000秒と同期読込み800、000秒を加え808、000秒で、合計904、000秒となる。[h]は904、000。
設問1(2)(加盟店)
加盟店表は索引探索に伴うランダムアクセスを大量に行う。データバッファを増やして表ページを保持できれば、ランダムアクセスの処理時間を短縮できる。25字以内では「ランダムアクセスの処理時間を短縮できるから」とまとめる。
設問1(2)(オーソリ履歴)
オーソリ履歴は表探索でページを順次に読むため、非同期読込みが前提となる。バッファを増やしても順次アクセスの処理時間には影響しない。
設問1(3)
利用日列の副次索引を追加すると、オーソリ履歴へのINSERT時に索引も更新する必要がある。したがって挿入時に更新する索引が増え、処理時間が長くなる。
設問2(1)
課題1はINSERT性能です。カード番号を区分キーにする案A・Bでは、挿入される行が複数の区分に分散する。一方、利用日をキーにする案Cでは同じ月の挿入が同一または限られた区分に集中しやすい。
設問2(2)(イ)
案Cは利用日を1か月単位のレンジ区分にしている。検索対象は請求対象月の1か月なので、該当する区分は最小1区分となる。したがって[イ]は1。
設問2(2)(ロ)
オーソリ履歴全体のページ数24億を60区分に均等分配する。1区分のページ数は24億÷60=4、000万ページであり、[ロ]は40、000、000。
設問2(3)
案Aはハッシュ区分であり、カード番号の範囲をWHERE句に追加しても、ハッシュ値から区分が決まるため範囲で探索区分を限定できない。公式解答例では「区分方法がハッシュでは探索する区分を限定できないから」としている。
設問2(4)
案Cは利用日によるレンジ区分なので、月初の再編成では対象月など必要な1区分だけを再編成できる。20字以内では「1区分だけを再編成すれば良いから」と押さえる。
設問3(1)
更新を多重化しても、コミットはログ出力処理の完了まで待たされる。また、ログ出力は一つのログを対象に行われ、並列化・逐次化の制約がある。したがってログ出力処理がボトルネックになる。
設問3(2)
1行更新ごとにコミットすると、コミット回数が増え、そのたびにログ出力処理の完了を待つ。本文の用語では、ログ出力処理の待ち時間の合計、またはコミット時の待ち時間の合計が長くなると説明する。
学習のポイント
ページ単位の性能計算と、区分キー・ログ処理の特性を結び付けて説明する力を養う。
出典:独立行政法人 情報処理推進機構(IPA)令和3年度秋期 データベーススペシャリスト試験 午後Ⅰ 問2(公式資料:問題冊子(PDF) / 解答例 / 採点講評)
関連する過去問一覧
IPA Advancedは非公式の学習サイトです。解説にはAIによる補助生成を含む場合があります。公式の問題冊子・解答例・採点講評を優先し、誤りは確認後に訂正します。運営・編集方針