応用情報技術者試験過去問を解いてみた R6年度 春期 問25

はじめに

今回も、応用情報技術者試験の過去問を解いていきます。

今回のテーマは ストアドプロシージャ(Stored Procedure) です。
データベースのパフォーマンスやシステム設計に関係する重要な概念であり、実務でもよく登場します。

「アプリケーションとDBの役割分担」という観点で理解すると、とても分かりやすくなります。

それでは問題を見ていきましょう。


問題

問25 ストアドプロシージャの利点はどれか。

選択肢内容
アプリケーションプログラムからネットワークを介してDBMSにアクセスする場合,両者間の通信量を減少させる。
アプリケーションプログラムからの一連の要求を一括して処理することによって,DBMS内の実行計画の数を減少させる。
アプリケーションプログラムからの一連の要求を一括して処理することによって,DBMS内の必要バッファ数を減少させる。
データが格納されているディスク装置へのI/O回数を減少させる。

解答


解説

ストアドプロシージャとは

ストアドプロシージャとは、
DBMSの内部に保存して実行するプログラム(SQL処理のまとまり)のことです。

通常のシステムでは、以下のような構造になります。

アプリケーション

SQL ネットワーク

DBMS

しかし、ストアドプロシージャを使うと、

アプリケーション

ストアドプロシージャ呼び出し

DBMS内で処理

となります。

つまり、

SQL処理の一部をDB側に持たせる仕組み

です。


ストアドプロシージャの最大のメリット

ストアドプロシージャの大きな利点は

ネットワーク通信量の削減

です。

例えば、

ストアドプロシージャを使わない場合

アプリ → SQL送信
DB → 結果返す
アプリ → SQL送信
DB → 結果返す
アプリ → SQL送信
DB → 結果返す

このように何度も通信が発生します。


ストアドプロシージャを使う場合

アプリ

ストアドプロシージャ呼び出しDB内部で処理

結果だけ返す

つまり

通信回数が減る

というメリットがあります。


各選択肢の検討

選択肢判定理由
ストアドプロシージャの代表的メリットは通信量削減
×実行計画の数は基本的に関係ない
×バッファ数とは直接関係しない
×ディスクI/O回数はSQL内容による

なぜ通信量が減るのか(重要)

アプリからDBへ

  • SQLを何回も送る
  • 結果を何回も受け取る

このやり取りが減るためです。

これは大規模システムでは非常に重要です。

特に

  • Webシステム
  • 分散システム
  • クラウド

ではネットワークがボトルネックになるためです。


問題の用語解説

ストアドプロシージャ(Stored Procedure)

DBMSに保存されたプログラム。

特徴

  • DB内部で処理を実行
  • SQL処理をまとめられる
  • ネットワーク通信削減
  • 処理速度向上

例:

CREATE PROCEDURE update_user
BEGIN
UPDATE users SET age = age + 1;
END;

DBMS(Database Management System)

データベースを管理するソフトウェア。

代表例

  • MySQL
  • PostgreSQL
  • Oracle
  • SQL Server

実行計画(Execution Plan)

SQLをどのように実行するかを決めた処理計画。

  • インデックス使用
  • テーブルスキャン
  • 結合順序

体系的位置づけ

この問題は、応用情報技術者試験のシラバスでは以下の分野に属します。

ソフトウェア
└ データベース
└ DBMS
└ ストアドプロシージャ

より広く見ると

システム構成

アプリケーション

DBアクセス設計

ストアドプロシージャ

という システム設計の話になります。


今回の問題の重要ポイント

今回の問題で押さえるべきポイントは次の3つです。

① ストアドプロシージャ=DB内部プログラム

アプリではなく
DBに処理を置く


② 最大メリットは通信削減

覚えるポイント

ストアドプロシージャ

通信量削減

③ パフォーマンス向上につながる

理由

  • ネットワーク通信削減
  • DB側で効率的に処理

まとめ

今回の問題のポイントを整理します。

項目内容
テーマストアドプロシージャ
ポイントDB側に処理を置く
最大メリットネットワーク通信量削減
正解

覚え方としては

「ストアド=DBの中で処理」

と覚えると分かりやすいです。



参考情報

コメント

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