基本情報 平成25年度 春期 問28:テクノロジ系に関する問題
クライアントサーバシステムにおいて, 利用頻度の高い命令群をあらかじめサーバ 上の DBMS に用意しておくことによって, データベースアクセスのネットワーク負荷 を軽減する仕組みはどれか。
- a2 相コミットメント
- bグループコミットメント
- cサーバプロセスのマルチスレッド化 ストアドプロシージャ
- dH ざへ ヽ正答
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは d「ストアドプロシージャ」 です(OCRが乱れていますが、正答はストアドプロシージャ)。
クライアント(PC)からサーバ(データベース)に「これやって、次はこれ」と毎回個別命令を送ると通信回数が増えて遅くなります。そこで、よく使う命令のセットをサーバ側に保存しておく仕組みがストアドプロシージャ。
たとえばよく使う計算をマクロにしてExcelに保存しておき、ボタン一押しで実行するイメージ。
👉 覚え方:「ストアド=Stored=保存済みの処理。サーバ側で実行」。
ほかの選択肢:a 2相コミットは分散DBの整合性/b グループコミットは複数の更新を一括/c マルチスレッド化は処理の並列化。
なぜこれが正解か
正解は d(OCR乱れあり、ストアドプロシージャが正答)。ストアドプロシージャは、複数のSQL文や処理ロジックをDBMS上に事前登録しておく機能。クライアントは1つの呼び出しで複数処理を実行できるため、SQL文ごとの通信が不要となりネットワーク負荷を軽減できる。
各選択肢の解説
- a 2相コミット:分散トランザクションでの整合性保証技法(複数DBに対する一貫したコミット)。
- b グループコミット:複数トランザクションのコミット処理をまとめて実行しディスクI/Oを削減する技法。
- c マルチスレッド化:サーバプロセスを複数スレッドで並列処理する技法(スループット向上)。
- d ストアドプロシージャ:サーバ側に処理を保存しネットワーク負荷軽減。
覚え方・ひっかけ注意
「ストアドプロシージャ=サーバ側に保存された手続き=呼び出し1回で複数処理」。利点は (1)ネットワーク負荷軽減、(2)処理高速化(プリコンパイル)、(3)セキュリティ(直接SQL公開不要)、(4)ロジック集約。欠点はDBMS依存(移行困難)。トリガー(自動実行)、ストアドファンクション(戻り値あり)と区別すること。
理論的背景
ストアドプロシージャはRDBMS内に格納される手続き型コードで、SQL拡張言語(Oracle PL/SQL、SQL Server T-SQL、PostgreSQL PL/pgSQL、MySQL Stored Procedure)で記述される。事前にDBMS内部表現にコンパイル/解析されるため実行効率が高く、ネットワーク往復削減でレイテンシ短縮効果が大きい。関連機能として ストアドファンクション(戻り値あり、SELECT文中で利用可)、トリガー(INSERT/UPDATE/DELETEイベントで自動起動)、パッケージ(複数プロシージャをまとめる、Oracle PL/SQL)がある。
実務での使われ方
金融機関・大規模基幹系で長年活用されてきた中核技術。バッチ処理、複雑なビジネスロジック、トランザクション境界制御を一元化。マイクロサービス時代は ストアドプロシージャ批判(DBMS依存・テスト困難・スケール難)も強まり、ビジネスロジックをアプリケーション層に移す設計が主流化。それでもデータ整合性が最優先される領域(会計・在庫・決済)では現役技術。NoSQL/分散DBでは類似機能として MongoDBのAggregation Pipeline、Cassandraのユーザ定義関数、Redis Luaスクリプト等が用意される。
試験での位置づけ
FE・APデータベース分野で頻出。SQL基礎、トランザクション制御、分散DB、レプリケーション、データベースチューニングと併せて押さえる。応用情報・データベーススペシャリストでは具体的なPL/SQL・T-SQL構文、カーソル処理、例外処理、トランザクション分離レベルまで踏み込む。
選択肢の発展補足
2相コミット(a:2PC, Two-Phase Commit)は分散トランザクションの古典プロトコルで、準備フェーズ(PREPARE)→ コミットフェーズ(COMMIT)の2段階で全ノードの合意を取る。XA仕様(X/Open)が標準だが、ブロッキングと単一障害点が課題で、近年はSagaパターン(補償トランザクション)や結果整合性(Eventual Consistency)が代替手法として採用される。グループコミット(b)はWAL(Write-Ahead Logging)の書き込みを集約してディスクI/Oを削減する技法でPostgreSQL/MySQLで実装済み。マルチスレッド化(c)はOracle MTS(Multi-Threaded Server)が古典例で、コネクションプールと組み合わせ多数クライアント対応の標準アーキテクチャ。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成25年度 春期 問28/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。