最終更新日:2026年7月30日
fe fe-technology database sql
まず結論
ストアドプロシージャとは、複数のSQLやデータベース処理をひとまとまりの手続きとしてDBMS側に保存し、名前を指定して呼び出す仕組みです。
基本情報技術者試験では、次の表現が判断の決め手になります。
よく使う命令群をDBMS側に用意する
+
クライアントからまとめて呼び出す
→ ストアドプロシージャ
複数のSQLをクライアントから1回ずつ送る代わりに、DBMS内へ保存した処理を呼び出すため、クライアントとサーバ間の通信回数を減らせます。
直感的な説明
ストアドプロシージャは、よく使う作業手順をサーバ側へ登録しておく仕組みと考えると分かりやすいです。
例えば、注文を確定するときに次の処理が必要だとします。
1. 在庫数を減らす
2. 注文履歴を登録する
3. 売上を記録する
クライアントから各処理を別々に要求すると、何度も通信が発生します。
クライアント → 在庫更新 → DBMS
クライアント → 注文登録 → DBMS
クライアント → 売上記録 → DBMS
ストアドプロシージャでは、この手順をDBMS側に保存しておきます。
クライアント
↓ 1回呼び出す
ストアドプロシージャ
↓
DBMS内で複数の処理を実行
クライアントは、細かいSQLをすべて送る代わりに、保存済みの処理を呼び出します。
定義・仕組み
ストアドプロシージャは、データベースに対する一連の処理をまとめ、DBMS内に保存した手続きです。
Stored = 保存された
Procedure = 手続き
主な流れは次のとおりです。
1. 複数のSQLや処理手順を作成する
2. DBMS内へ保存する
3. クライアントから名前を指定して呼び出す
4. DBMS側で処理を実行する
5. 必要な結果をクライアントへ返す
通信回数を減らせる理由
複数のSQLを1文ずつ送る場合は、そのたびにクライアントとサーバ間で通信が発生します。
SQL1を送信
SQL2を送信
SQL3を送信
ストアドプロシージャを使うと、複数の処理をまとめて呼び出せます。
ストアドプロシージャを1回呼び出す
↓
DBMS内でSQL1・SQL2・SQL3を実行
したがって、通信回数を減らし、ネットワーク負荷を軽減できる場合があります。
ただし、ストアドプロシージャを使えば必ず高速になるとは限りません。処理内容、DBMS、呼出し回数、データ量などによって効果は変わります。
トランザクションとの関係
ストアドプロシージャの中で、複数の更新処理をひとまとまりとして扱うことがあります。
この「全部成功したら確定し、途中で失敗したら取り消す」という考え方は、トランザクションと関係します。
ストアドプロシージャ
→ DBMS側に保存した処理手順
トランザクション
→ 途中で分けてはいけない処理単位
同じものではないので、役割を分けて覚えます。
このテーマは、基本情報技術者試験の「データベース」と関係する内容です。公式の出題範囲やシラバスは、IPA:基本情報技術者試験 から確認できます。
科目Aでどう出る?
科目Aでは、目的や仕組みの説明から用語を選ぶ問題が中心です。
| 問題文の表現 | 選ぶ用語 |
|---|---|
| よく使う命令群をDBMS側に保存する | ストアドプロシージャ |
| 複数のデータベース処理をまとめて呼び出す | ストアドプロシージャ |
| 複数サイトの更新可否を確認して全体を確定する | 2相コミット |
| 複数のコミットログをまとめてディスクへ書き込む | グループコミット |
| 1つのプロセス内で複数の処理単位を並行実行する | マルチスレッド |
問題文では、まず「何をどこへ保存するのか」を確認します。
SQLや処理手順をDBMSへ保存
→ ストアドプロシージャ
次に、「何の負荷を減らしたいのか」を見ます。
クライアントとサーバ間の通信回数
→ ストアドプロシージャ
コミットログのディスク書込み回数
→ グループコミット
サーバ内の並行処理
→ マルチスレッド
選択肢を切る順番
1. DBMS側に命令群を保存するか
2. クライアントからまとめて呼び出すか
3. 通信回数の削減が目的か
この3点がそろえば、ストアドプロシージャを選びます。
どんな場面で使う?
ストアドプロシージャは、同じデータベース処理を複数のクライアントから繰り返し利用する場面で使われます。
例えば、次のような処理です。
注文確定
月次集計
在庫引当て
請求情報の登録
処理をDBMS側にまとめることで、次の効果を期待できます。
- クライアントとサーバ間の通信回数を減らす
- 複数の処理を共通化する
- クライアント側の処理を簡潔にする
- データベース操作をDBMS側へ集約する
一方で、DBMS製品ごとに記述方法が異なる場合があります。そのため、試験では製品固有の文法よりも、DBMS側に保存して呼び出す役割を押さえることが大切です。
よくある誤解・混同
ストアドプロシージャと2相コミット
| 用語 | 目的 |
|---|---|
| ストアドプロシージャ | DBMS側に処理を保存し、まとめて呼び出す |
| 2相コミット | 分散DBで複数サイトの更新結果をそろえる |
命令群を保存して呼び出す
→ ストアドプロシージャ
全参加者へ更新可能か確認する
→ 2相コミット
ストアドプロシージャとグループコミット
グループコミットは、複数のトランザクションのコミットログをまとめてディスクへ書き込む仕組みです。
| 用語 | まとめるもの | 主な目的 |
|---|---|---|
| ストアドプロシージャ | SQLやデータベース処理 | 通信回数の削減・処理の共通化 |
| グループコミット | 複数のコミットログ | ディスク書込みの効率化 |
「まとめる」という言葉だけで判断せず、何をまとめるかを確認します。
ストアドプロシージャとマルチスレッド
ストアドプロシージャ
→ DBMSに保存した処理を呼び出す
マルチスレッド
→ 1つのプロセス内で複数の処理単位を動かす
マルチスレッドはサーバ内の並行処理に関する仕組みであり、SQLや命令群をDBMSへ保存する仕組みではありません。
ストアドプロシージャとトランザクション
ストアドプロシージャ
→ 処理手順をどこに保存するか
トランザクション
→ どこまでを一括して確定・取消しするか
複数のSQLを扱う点は似ていますが、判断する観点が違います。トランザクションの基本は、トランザクションとは?で整理しています。
まとめ(試験直前用)
- ストアドプロシージャは、SQLや処理手順をDBMS側に保存する仕組み
- クライアントからまとめて呼び出し、通信回数を減らせる場合がある
- 複数サイトの更新をそろえるのは2相コミット
- コミットログの書込みをまとめるのはグループコミット
- サーバ内の並行処理はマルチスレッド