経営情報システム ③応用編_データベースとSQL21問〜25問

問21:データベースにおいて、2つの異なるトランザクションが、お互いに相手がロックを解除するのを永久に待ち続けてしまい、処理が完全にフリーズ(膠着状態)してしまう現象を指す用語として、最も適切なものはどれか。

  • A:ライブロック
  • B:デッドロック
  • C:スラッシング
  • D:コンフリクト
  • E:ロールフォワード
【第21問:正解と解説】

正解:B
【解説】
・A:不適切:ライブロックは、処理自体は動き続けている(状態が変化している)が、互いに譲り合って一歩も前に進まない現象です。
・B:適切:デッドロック(Deadlock)の説明です(例:処理1がAをロックしてBを要求、処理2がBをロックしてAを要求するとフリーズする)。RDBMSはこれを自動検知し、一方のトランザクションを強制的にエラー(ロールバック)にして膠着を解消します。
・C:不適切:スラッシングは、OSの仮想メモリ管理においてページングが頻発し、CPUがデータ転送処理に忙殺されてシステム全体のスループットが著しく低下する現象です。データベースのロックとは無関係です。
・D:不適切:コンフリクト(Conflict)は一般に「競合・衝突」を意味し、複数トランザクションが同じリソースを取り合う状況を広く指しますが、両者が永久にフリーズする膠着状態(デッドロック)の正式な名称ではありません。
・E:不適切:ロールフォワードとは、バックアップからの復旧時にログファイルを順方向に適用してコミット済みの変更を再現する「前進復帰」の操作であり、ロックの膠着状態を指す用語ではありません。


問22:分散データベースシステムにおいて、ネットワークで繋がれた複数のサーバー(ノード)にまたがるトランザクションの一貫性を担保するために用いられる「2相コミットプロトコル(Two-Phase Commit)」に関する記述として、最も適切なものはどれか。

  • A:すべてのサーバーに対して一斉に更新データを書き込み、最初に書き込みが完了した上位2つのサーバーの結果のみを正とする手法である。
  • B:データベースの正規化のプロセスにおいて、第2正規形と第3正規化の作業を同一のステップで同時に実行する設計自動化ツールである。
  • C:データを暗号化するフェーズと、パスワードを検証するフェーズの2つのセキュリティ層を通過させることで、データの盗聴を防止する通信プロトコルである。
  • D:主サイトが全参加サイトに対して更新が可能か問い合わせる「確約準備段階(フェーズ1)」と、全サイトからの合意を得て実際に一斉確定させる「確約段階(フェーズ2)」の2ステップで制御する。
  • E:2相コミットプロトコルを採用すると、参加しているサーバーの1台がネットワークから完全に切断されても、全体の処理が一切中断されずに進行する。
【第22問:正解と解説】

正解:D
【解説】
・A:不適切:多数決やスピード勝負で決める仕組み(クォーラム等)ではなく、全員の合意を前提とするプロトコルです。
・B:不適切:データベース設計の正規化の自動化ツールではありません。分散トランザクションを制御するための通信プロトコルです。
・C:不適切:2相コミットはデータベースのトランザクション一貫性を保つプロトコルであり、暗号化やパスワード検証を行うセキュリティプロトコルとは全く異なります。
・D:適切:2相コミット(2PC)の正確なメカニズムです。調整者(主サイト)が参加者に「コミットできるか?」と聞き(投票・準備フェーズ)、全員が「OK」と答えた場合のみ、実際に「コミットせよ」という命令を出します(実行・確定フェーズ)。1台でもNG(または応答なし)なら全員がロールバックします。
・E:不適切:2相コミットは参加ノードの全員の合意を必要とするため、1台でもネットワーク切断や応答不能になると全体の処理がブロック(待機)されてしまうという弱点があります。これを「ブロッキング問題」と呼びます。


問23:関係データベースの検索速度を高速化するための「インデックス(索引)」のうち、最も一般的であり、等価比較(=)だけでなく範囲検索(BETWEEN、>など)やソートの高速化にも有効なデータ構造として、最も適切なものはどれか。

  • A:ハッシュ(Hash)インデックス
  • B:リニア(線形検索)インデックス
  • C:ビットマップ(Bitmap)インデックス
  • D:フルテキスト(全文検索)インデックス
  • E:B-Tree(バランス木)インデックス
【第23問:正解と解説】

正解:E
【解説】
・A:不適切:ハッシュインデックスは、特定の値を一発で探す等価比較(=)は超高速ですが、データの大小関係が保存されないため、範囲検索や並び替え(ORDER BY)には使用できません。
・B:不適切:リニア(線形)インデックスという名称の標準的なデータ構造はありません。線形探索は先頭から順に検索する最も基本的な方法であり、インデックスを使わない状態に近く、高速化とは逆方向の概念です。
・C:不適切:ビットマップインデックスは、取り得る値の種類が少ない列(性別、ステータスなど)に対して効果的なインデックスです。大量のデータを一括読み込みするデータウェアハウスに向いており、更新が多いOLTPシステムには不向きです。
・D:不適切:フルテキスト(全文検索)インデックスは、長い文章の中から特定の単語を検索するための専用インデックスです。数値型の範囲検索やソートの高速化には使用しません。
・E:適切:多くのRDBMS(MySQL、PostgreSQL等)で標準採用されているのがB-Treeインデックスです。木構造が常に均等な深さを保つよう調整されるため、どのような値でも一定の速度で探せます。データが整列して格納されているため、範囲指定の検索やソート処理の高速化にも極めて強力に作用します。


問24:RDBMSの内部でSQL文が実行される際、どのインデックスを使い、どの順序でテーブルを結合するかといった「最も効率的な実行手順(実行計画)」を自動的に計算して決定するエンジンの名称として、最も適切なものはどれか。

  • A:コンパイラ
  • B:オプティマイザ(最適化装置)
  • C:パーサ(構文解析器)
  • D:ディスパッチャ
  • E:スケジューラ
【第24問:正解と解説】

正解:B
【解説】
・A:不適切:コンパイラはソースコードを機械語等に一括変換するプログラムであり、SQLの実行経路を動的に選定するエンジンではありません。
・B:適切:オプティマイザ(Optimizer)は、テーブルのデータ量やインデックスの分布状況などの「統計情報」を元に、SQLを最も速く処理できるルート(実行計画:Execution Plan)を導き出す頭脳にあたるコンポーネントです。現在はコストベースオプティマイザ(CBO)が主流です。
・C:不適切:パーサ(構文解析器)はSQL文の文法的な正しさを確認し、構文木に変換するコンポーネントです。実行計画を選定するのはその後段のオプティマイザです。
・D:不適切:ディスパッチャはOSやネットワーク機器においてプロセスやパケットを振り分ける機能を指す言葉であり、SQLの実行計画を作成するエンジンの名称ではありません。
・E:不適切:スケジューラはジョブの実行タイミングを管理するOSやミドルウェアのコンポーネントであり、SQLの最適な実行経路を計算する機能ではありません。


問25:実務において、複雑なSQLを毎回記述する手間を省いたり、セキュリティ対策(特定の列を隠蔽する)として、元のテーブルから特定の条件で切り出した「仮想的な表」をデータベース上に定義する機能として、最も適切なものはどれか。

  • A:ビュー(View)
  • B:ストアドプロシージャ
  • C:インデックス
  • D:シノニム(同義語)
  • E:スキーマ
【第25問:正解と解説】

正解:A
【解説】
・A:適切:ビュー(View)の説明です。実データを持たない「仮想的なテーブル」であり、中身はただのSELECT文の定義です。これを利用することで、利用者に元テーブルの機密列(給与など)を見せずに必要な列だけを開示したり、複雑な結合済みの表を1つのシンプルな表として扱わせることができます。
・B:不適切:ストアドプロシージャは、一連のSQLを処理としてDBサーバー内部に保存・登録しておき、呼び出して実行するプログラムです。仮想的な表を定義する機能ではありません。
・C:不適切:インデックスは検索速度を高速化するための索引データであり、仮想的な表を定義する機能ではありません。
・D:不適切:シノニム(同義語)は既存のテーブルやビューに別名(エイリアス)を付ける機能であり、仮想的な表を定義するものではありません。
・E:不適切:スキーマはデータベースの論理的な構造(テーブル・ビュー・ユーザー等の集合)を定義する概念であり、特定条件で切り出した仮想表そのものではありません。


コメント

タイトルとURLをコピーしました