ホーム > データベーススペシャリスト試験 > 2024年
データベーススペシャリスト試験 2024年 午前2 問02
クライアントサーバシステムにおけるストアドプロシージャに関する記述のうち, 適切でないものはどれか。
ア:機密性が高いデータに対する処理を特定のプロシージャ呼出しに限定することによって, セキュリティを向上させることができる。
イ:システム全体に共通な処理をプロシージャとして格納しておくことによって, 処理の標準化を行うことができる。
ウ:データベースへのアクセスを細かい単位でプロシージャ化することによって, 処理性能(スループット)を向上させることができる。(正解)
エ:複数のSQL文から成る手続を1回のプロシージャ呼出しで実行することによって, クライアントとサーバの間の通信回数を減らすことができる。
解説
クライアントサーバシステムにおけるストアドプロシージャに関する問題【午前2 解説】
要点まとめ
- 結論:ストアドプロシージャは処理の標準化やセキュリティ向上、通信回数削減に効果的だが、細かい単位でのプロシージャ化が必ずしも性能向上につながるわけではない。
- 根拠:ストアドプロシージャは複数SQL文をまとめて実行し通信負荷を減らすが、細分化しすぎるとオーバーヘッドが増え性能低下の原因になる。
- 差がつくポイント:性能向上を狙う際は、処理の粒度を適切に設定し、通信回数削減や処理の集約を意識することが重要である。
正解の理由
選択肢ウは「細かい単位でプロシージャ化することで処理性能(スループット)を向上させる」と述べていますが、これは誤りです。ストアドプロシージャは複数のSQL文をまとめてサーバ側で処理することで通信回数を減らし性能向上を図ります。しかし、処理を細かく分割しすぎると呼び出し回数が増え、逆に通信や管理のオーバーヘッドが増大し性能が低下する可能性があります。したがって、細かい単位でのプロシージャ化が必ずしも性能向上に結びつくわけではありません。
よくある誤解
ストアドプロシージャは「細かく分ければ分けるほど性能が良くなる」と誤解されがちですが、実際は処理の粒度が細かすぎると通信回数や管理コストが増え逆効果です。
解法ステップ
- ストアドプロシージャの基本的な役割を理解する(処理の集約、通信回数削減、セキュリティ向上など)。
- 各選択肢の内容がストアドプロシージャの特徴に合致しているかを検証する。
- 性能向上に関する記述が正しいか、特に処理の粒度と通信回数の関係を考慮する。
- 誤った記述(細かい単位でのプロシージャ化が性能向上につながる)を選択する。
選択肢別の誤答解説
- ア: 機密性の高い処理を特定のプロシージャに限定することでアクセス制御が可能となり、セキュリティ向上は正しい。
- イ: 共通処理をプロシージャ化することで処理の標準化や保守性向上が期待できるため正しい。
- ウ: 細かい単位でのプロシージャ化は通信回数増加や管理負荷増大を招き、必ずしも性能向上しないため不適切。
- エ: 複数SQL文をまとめて1回の呼出しで実行することで通信回数を減らし性能向上が可能であり正しい。
補足コラム
ストアドプロシージャはデータベースサーバ上に格納されるプログラムで、クライアントからの呼び出しにより実行されます。これによりネットワーク通信の回数を減らし、処理の一貫性やセキュリティを高めることができます。ただし、設計時には処理の粒度や呼び出し頻度を考慮し、最適な分割を行うことが重要です。
FAQ
Q: ストアドプロシージャはなぜセキュリティ向上に役立つのですか?
A: データベースへの直接アクセスを制限し、特定のプロシージャ経由でのみ操作を許可することで、不正アクセスを防止できます。
A: データベースへの直接アクセスを制限し、特定のプロシージャ経由でのみ操作を許可することで、不正アクセスを防止できます。
Q: ストアドプロシージャを細かく分けるとどんな問題がありますか?
A: 呼び出し回数が増え通信負荷や管理コストが増大し、結果的に性能が低下する可能性があります。
A: 呼び出し回数が増え通信負荷や管理コストが増大し、結果的に性能が低下する可能性があります。
関連キーワード: ストアドプロシージャ, クライアントサーバシステム, SQL最適化, 処理性能, セキュリティ強化