基本情報技術者 2014年 秋期 午前(科目A) 問29
問題文
データベースのアクセス効率を低下させないために、定期的に実施する処理はどれか。
選択肢
ア:再編成(正解)
イ:データベースダンプ
ウ:バックアップ
エ:ロールバック
データベースのアクセス効率を低下させないために、定期的に実施する処理はどれか。【午前2 解説】
要点まとめ
- 結論: データベースのアクセス効率を維持するには、テーブルやインデックスの断片化を解消する「再編成」を定期実行することが有効です。
- 根拠: 再編成は空き領域の回収とデータの物理的再配置やインデックス再構築によりI/O負荷を低減して応答性能を改善します。
- 差がつくポイント: オンライン/オフラインの手法や実行頻度、統計情報更新を業務負荷と照らして設計することが性能維持で差を生みます。
正解の理由
選択肢の目的が「アクセス効率を低下させないために定期的に実施する処理」であるため、断片化や無駄な空き領域を解消して読み書き性能を回復する「再編成」が正解です。再編成(リオーガナイズ、再構築)はインデックスの断片化を除去し、テーブル領域を圧縮・再配置して物理I/Oを減らします。これによりクエリの応答時間が改善され、フルスキャンやランダムI/Oの増加を防げます。
よくある誤解
- 再編成とバックアップを混同する: バックアップはデータ保護が目的であり性能改善を直接もたらすわけではありません。
- ダンプやバックアップで断片化が解消されると思い込む: エクスポート/インポートは結果的に再配置を伴う場合があるが、定常的な運用で再編成とは目的と影響が異なります。
- ロールバックをメンテナンス手段と誤解する: ロールバックはトランザクションの取り消しであり、断片化解消や定期メンテナンスの役割はありません。
解法ステップ
- 問題文で求められている目的を明確にする:「アクセス効率を低下させないために定期的に実施」
- 選択肢を目的別に分類する:「性能維持(再編成)」「バックアップ・保全(ダンプ/バックアップ)」「トランザクション制御(ロールバック)」
- 性能維持に直接寄与するものを選ぶ:断片化解消・インデックス再構築に該当する「再編成」が該当。
- 他選択肢が何を目的とするか簡潔に確認して誤りを検証する。
選択肢別の誤答解説
- ア: 再編成 — 正解。テーブルとインデックスの断片化を解消し、空き領域を回収、I/O削減による性能改善を目的とする定期保守作業です。
- イ: データベースダンプ — 誤り。ダンプ(エクスポート)はデータの書き出し/移行を目的とし、直接的なアクセス効率の維持を目的としません。
- ウ: バックアップ — 誤り。バックアップは障害対策・可用性確保が目的であり、性能改善を主目的とする処理ではありません。
- エ: ロールバック — 誤り。ロールバックはトランザクションを取り消す処理で、定期的に行って性能を保つような保守処理ではありません。
補足コラム
- 再編成の具体例(DBMS別)
- Oracle: インデックス再作成(ALTER INDEX ... REBUILD)、表の移動(ALTER TABLE ... MOVE)、統計収集(DBMS_STATS)。
- SQL Server: ALTER INDEX ... REORGANIZE / REBUILD、UPDATE STATISTICS。
- PostgreSQL: VACUUM (ANALYZE)、VACUUM FULL、REINDEX、CLUSTER。
- MySQL (InnoDB): OPTIMIZE TABLE によるテーブル再構築やインデックスの再生成。
- 実行上の注意点
- オンラインで可能か否か、ロックやパフォーマンスへの影響を確認し、業務時間外にスケジュールする。
- 再編成後は統計情報を更新してオプティマイザに正しい実行計画を提供することが重要です。
- 参考コマンド例(PostgreSQL)
-- テーブルの VACUUM と統計収集 VACUUM ANALYZE my_table; -- フル再編成(ロックを伴う) VACUUM FULL my_table; -- インデックス再構築 REINDEX TABLE my_table;
FAQ
Q1: 再編成はどの頻度で行えばよいですか?
A1: 変更頻度や行削除率、断片化の程度に依存します。更新・削除が多いテーブルは週次〜月次で、更新が少ないなら数か月に一度が目安です。モニタで断片化やI/O増加を観察して判断してください。
A1: 変更頻度や行削除率、断片化の程度に依存します。更新・削除が多いテーブルは週次〜月次で、更新が少ないなら数か月に一度が目安です。モニタで断片化やI/O増加を観察して判断してください。
Q2: 再編成とインデックス再構築の違いは?
A2: 用語はDBMSによって異なりますが、一般に「再編成(reorganize)」はオンラインで断片化を小さくする軽量操作、「再構築(rebuild)」は物理的に再作成して断片化を完全解消する重い操作です。
A2: 用語はDBMSによって異なりますが、一般に「再編成(reorganize)」はオンラインで断片化を小さくする軽量操作、「再構築(rebuild)」は物理的に再作成して断片化を完全解消する重い操作です。
Q3: 再編成でダウンタイムが必要になりますか?
A3: DBMSと手法により異なります。オンライン再編成が可能な場合は大きなダウンタイム不要ですが、完全再構築やVACUUM FULLなどはロックや長時間の処理が発生することがあるため計画的に実行します。
A3: DBMSと手法により異なります。オンライン再編成が可能な場合は大きなダウンタイム不要ですが、完全再構築やVACUUM FULLなどはロックや長時間の処理が発生することがあるため計画的に実行します。
関連キーワード: 再編成, インデックス断片化, VACUUM, OPTIMIZE TABLE, インデックス再構築, DB運用保守, パフォーマンスチューニング, 統計情報更新, メンテナンスウィンドウ, オンラインリオーガナイズ

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

