Pocket

■問題
クライアントサーバシステムにおけるストアドプロシージャに関する記述のうち、
誤っているものはどれか。

ア:機密性の高いデータに対する処理を特定のプロシージャ呼出しに
  限定することによって、セキュリティを向上させることができる。
イ:システム全体に共通な処理をプロシージャとして格納することによって、
  処理の標準化を行うことができる。
ウ:データベースへのアクセスを細かい単位でプロシージャ化することによって、
  処理性能(スループット)を向上させることができる。
エ:複数のSQL分から成る手続を1回の呼出しで実行できるので、
  クライアントとサーバ間の通信回数を減らすことができる。

■解説
ストアドプロシージャ(stored procedure)
データベースに対する一連の処理を1つのプログラムにして、
クライアントからは1つ1つSQL文でデータベースに要求するのではなく、
プログラムを指定することでデータベースに対する処理を実行することです。

■答え
ア:ストアドプロシージャを使うとクライアントがデータベースの
  個々のデータを参照することがないのでセキュリティを高めることが可能です。
イ:共通性の高い処理をストアドプロシージャにすることで、
  各クライアントが同じ処理を行うことになり処理の標準化が可能です。
ウ:ストアドプロシージャの処理を細かくするとクライアントと
  サーバ間のやり取りが多くなるので処理性能は落ちます。
エ:ストアドプロシージャを使用するとクライアントとサーバ間の
  やり取りが減るので、通信回数、通信量を減らすことができます。

ウが誤りです。

■現場では
バッチを実装する際に
Javaアプリケーションで実装すると性能がでなかったのですが
PL/SQLに変更したら数倍の性能を発揮したということがありました。

ストアドプロシージャの使用は
性能向上の一つの選択肢になりえます。