基本情報技術者 2015年 春期 午前(科目A) 問27
問題文
クライアントサーバシステムにおいて、クライアント側からストアドプロシージャを利用したときの利点として、適切なものはどれか。
選択肢
ア:クライアントとサーバの間の通信量を削減できる。(正解)
イ:サーバ内でのデータベースファイルへのアクセス量を削減できる。
ウ:サーバのメモリ使用量を削減できる。
エ:データベースファイルの格納領域を削減できる。
🔒 解説は解答すると表示されます
ストアドプロシージャの利点【午前解説】
正解の理由
ストアドプロシージャはデータベースサーバ上で実行されるプログラム(事前に格納されたSQL群)です。クライアントが複数の個別SQLを送信して逐次処理する代わりに、まとまった処理をサーバ側で一度に実行できるため、クライアントとサーバ間のメッセージ数(ラウンドトリップ)と転送するデータ量が減少します。これによりネットワーク通信量が削減され、特にネットワーク遅延や帯域制約がボトルネックとなる環境で効果が大きいです。以上より選択肢アが正解です。
解法ステップ
- ストアドプロシージャの実行場所を確認する(→DBサーバ側)。
- 「クライアント↔サーバ」の観点で何が変化するかを考える(ラウンドトリップ数、転送データ量)。
- 各選択肢が通信量・ディスクI/O・メモリ・格納領域のどれに直接影響するかを判定する。
- 「サーバ側で完結する」性質が直接関係する選択肢を正解と判断する。
選択肢別の誤答解説
- ア: クライアントとサーバの間の通信量を削減できる。
正解。処理をサーバ内でまとめて実行することでラウンドトリップや転送バイト数が減るため通信量が削減される。 - イ: サーバ内でのデータベースファイルへのアクセス量を削減できる。
誤り。ストアドプロシージャはデータをフィルタして転送量を減らせるが、サーバがデータを読み取る必要があるためディスクI/Oが必ず減るとは限らない。場合によっては同等か増えることもある。 - ウ: サーバのメモリ使用量を削減できる。
誤り。処理はサーバ側で実行されるため、CPUやメモリ使用が増えることが多い。メモリ削減が直接の効果とはならない。 - エ: データベースファイルの格納領域を削減できる。
誤り。ストアドプロシージャはロジックを格納するが、データファイルの占有領域を減らす手段ではない。
よくある誤解
- 「サーバ内のファイルアクセス量も必ず減る」:処理の流れ次第で転送量は減るが、サーバが読み取るデータ量(ディスクI/O)は必ずしも減らない点を見落としやすいです。
- 「サーバ資源が減る」:通信は減るが、処理はサーバ側で行われるためCPUやメモリ負荷が増える可能性があり、これを混同しがちです。
補足コラム
ストアドプロシージャはネットワーク効率化だけでなく、権限管理(クライアントに直接テーブルアクセスを与えずに処理を提供)、トランザクション管理の一元化、実行計画のキャッシュなどの利点もあります。一方で、ビジネスロジックがDB内に分散してしまうと保守性が低下し、RDBMS依存(ベンダロックイン)が強まる点には注意が必要です。最近はアプリケーション層での処理とデータ層での処理のバランスを意識し、必要に応じてストアドプロシージャとORMやAPIを使い分ける設計が採られます。
FAQ
Q: ストアドプロシージャは常に高速化するか?
A: いいえ。ネットワーク遅延や複数ラウンドトリップを削減できる場面では有利ですが、サーバ負荷や最適化次第では逆に遅くなる場合もあります。
A: いいえ。ネットワーク遅延や複数ラウンドトリップを削減できる場面では有利ですが、サーバ負荷や最適化次第では逆に遅くなる場合もあります。
Q: どんな場面で効果が大きいですか?
A: 低帯域・高遅延のネットワーク環境、クライアントから多数のSQLを発行していた処理をまとめるケースで効果が大きいです。
A: 低帯域・高遅延のネットワーク環境、クライアントから多数のSQLを発行していた処理をまとめるケースで効果が大きいです。
Q: データベースのディスク使用量は減りますか?
A: 基本的には減りません。格納するロジックは増える可能性があり、データ自体の保存量が減るわけではありません。
A: 基本的には減りません。格納するロジックは増える可能性があり、データ自体の保存量が減るわけではありません。
関連キーワード: ストアドプロシージャ、クライアントサーバ、ネットワーク通信量、ラウンドトリップ、ディスクI/O、サーバ負荷、パフォーマンス、トランザクション、保守性、ベンダロックイン

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

