基本情報技術者 2014年 春期 午前(科目A) 問25
問題文
SQL文を実行する際に、効率が良いと考えられるアクセス経路を選択する関係データベース管理システム(RDBMS)の機能はどれか。
選択肢
ア:オプティマイザ(正解)
イ:ガーベジコレクション
ウ:クラスタリング
エ:マージソート
🔒 解説は解答すると表示されます
アクセス経路選択【午前解説】
正解の理由
RDBMSがSQL実行時に「どの方法でデータにアクセスするか(アクセス経路)」を決める機能は、オプティマイザです。選択肢の中では ア(オプティマイザ)が該当します。オプティマイザは統計情報(テーブルの行数、列の分布、インデックスの有無など)を基に、複数の実行計画(インデックススキャン、フルテーブルスキャン、結合順序、結合アルゴリズムなど)を評価し、コスト(I/O、CPU、ネットワーク)を比較して最も効率的と推定される経路を選びます。したがって「効率の良いアクセス経路を選択する機能」として最も適切なのは ア です。
解法ステップ
- 問題文のキーワードを確認:「SQL文を実行」「効率が良いアクセス経路」「RDBMSの機能」。
- 各選択肢の役割を短く思い出す。
- オプティマイザ:実行計画の生成とコスト比較
- ガーベジコレクション:メモリ/不要領域の回収(一般にRDBMSのアクセス経路選択とは無関係)
- クラスタリング:データ配置やサーバ群の構成を指すことが多い(文脈上異なる)
- マージソート:ソート手法(アクセス経路そのものの選択ではない)
- 最も直接関連する機能がオプティマイザであると判断する。
選択肢別の誤答解説
-
ア(オプティマイザ)
正答。アクセスパス(インデックス利用、フルスキャン、結合手法など)を評価し最適な実行計画を決定する機能である。 -
イ(ガーベジコレクション)
メモリ管理や不要オブジェクトの回収を行う機構であり、SQLのアクセス経路を選ぶ役割は基本的にない。データベース内部での不要領域整理(VACUUM等)と混同しないこと。 -
ウ(クラスタリング)
「クラスタリング」は文脈によって意味が異なる(クラスタ化インデックス=物理配置、複数サーバのクラスタ構成など)。アクセス経路の選択そのものを行う機能ではないため不適切。 -
エ(マージソート)
ソートアルゴリズムの一種で、結果セットの並び替えに使われることはあるが、アクセス経路(どのインデックスや走査法を使うか)を決める機能ではない。
よくある誤解
- 「オプティマイザは必ず完璧に最適な計画を選ぶ」
→ オプティマイザは統計やコストモデルに基づく推定を行うため、統計が古い・不正確、パラメータ分布が特殊、ヒントや制約の影響などで最適でない計画を選ぶことがある。 - 「インデックスがあれば常にインデックススキャンが選ばれる」
→ インデックスを使うコストとフルテーブルスキャンのコストを比較して選ぶ。小さな結果セットではインデックスを使うが、全件取得に近い場合はフルスキャンの方が安いことがある。 - 「オプティマイザ=単にソートや検索アルゴリズムを指す」
→ オプティマイザは複数の要素(結合順序、結合アルゴリズム、アクセス方法など)を総合的に評価して実行計画を生成する機能であり、単一のアルゴリズム名ではない。
補足コラム
- オプティマイザの種類
- ルールベース(RBO)とコストベース(CBO)。現代の主要RDBMSはCBOを採用し、統計情報に基づいてコスト比較を行います。
- コストの一般的な考え方
- 単純化すると といった形で評価されます。実際はメモリやネットワーク、並列度も考慮されます。
- 実務での対処法
- EXPLAIN(または実行計画表示機能)でプランを確認し、統計収集(ANALYZE等)、インデックス設計、クエリ書き換え、必要ならヒントでプランを誘導する。
例:PostgreSQLで実行計画を確認する例
EXPLAIN ANALYZE
SELECT * FROM orders WHERE customer_id = 123;
FAQ
Q1: オプティマイザは常に最適な実行計画を出すとは限りませんか?
A1: はい。限らない。オプティマイザは統計情報やコストモデルに基づいて最良と推定される計画を選ぶが、統計が古い・不正確、データ分布に偏りがある、パラメータによるスニッフィング問題、誤ったコスト係数設定などにより、実際の最適計画と異なる選択をすることがある。
A1: はい。限らない。オプティマイザは統計情報やコストモデルに基づいて最良と推定される計画を選ぶが、統計が古い・不正確、データ分布に偏りがある、パラメータによるスニッフィング問題、誤ったコスト係数設定などにより、実際の最適計画と異なる選択をすることがある。
Q2: 統計情報の更新はどれくらい重要ですか?
A2: 非常に重要です。統計が正確でないとオプティマイザの選択が狂い、非効率なプラン(大量の不要I/Oなど)が選ばれる可能性があります。定期的なANALYZEや自動収集設定の確認を推奨します。
A2: 非常に重要です。統計が正確でないとオプティマイザの選択が狂い、非効率なプラン(大量の不要I/Oなど)が選ばれる可能性があります。定期的なANALYZEや自動収集設定の確認を推奨します。
Q3: オプティマイザの判断を強制できますか?
A3: 多くのRDBMSはヒント(HINT)機能やプランガイドで特定のインデックスや結合手法を指示できますが、乱用は将来のデータ変化により逆効果になるため慎重に使うべきです。まずは統計更新やクエリのリライトで改善を試みます。
A3: 多くのRDBMSはヒント(HINT)機能やプランガイドで特定のインデックスや結合手法を指示できますが、乱用は将来のデータ変化により逆効果になるため慎重に使うべきです。まずは統計更新やクエリのリライトで改善を試みます。
関連キーワード: オプティマイザ、実行計画、アクセスパス、インデックススキャン、フルテーブルスキャン、コストベース最適化、統計情報、EXPLAINプラン

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

