物理設計・インデックス・障害回復 重要度:★★★出題: AM2・PM1・PM2
テーブル分割(パーティショニング:レンジ・ハッシュ・リスト)
てーぶるぶんかつぱーてぃしょにんぐ / Table Partitioning (Range, Hash, List)
巨大なテーブルを論理的には1つのテーブルとして扱いつつ、物理的には分割キー(日付範囲・ハッシュ値・コードリスト)に基づいて複数のパーティション(格納領域)へ分割管理する物理設計技法。
3行速習ポイント
- レンジ(範囲)分割:売上年月や履歴年月日などの範囲ごとに分割。過去データの月単位パージ(DROP/TRUNCATE PARTITION)が瞬時に完了し、検索時のパーティションプルーニングに有効
- ハッシュ分割:分割キーのハッシュ値で均等に振り分ける。特定キーへのアクセス集中(I/Oホットスポット)を分散させたい場合に有効
- リスト分割:地域コードや都道府県コード、ステータス区分など離散値のリストごとに分割管理する方式
図解
図3つのパーティショニング方式と用途
時系列データ
レンジ(範囲)分割
年月・日付範囲で分割。期間検索のプルーニングと古い月のDROP PARTITION高速削除に最適
負荷均等化
ハッシュ分割
主キー等のハッシュ値で均等分散。特定箇所へのI/O集中(ホットスポット)を解消
区分管理
リスト分割
地域コードや事業区分など特定のコード値リストごとに格納領域を分離
概要と本質
午前IIの物理設計問題および午後I・午後IIの大規模テーブル設計・バッチ性能改善問題で頻出のテーマです。特に「数億行の履歴テーブルから保存期間(例:3年)を過ぎた古いデータを削除する夜間バッチが長時間かかって終わらない」という課題に対し、DELETE文(1行ずつUNDO/REDOログを書き出し索引も更新する)ではなく、月別レンジパーティショニング+パーティション単位の切り離し・削除(またはテーブル再定義)を使う解決策が定番です。
重要ポイント・コア概念
- パーティションプルーニング(Partition Pruning):WHERE句に分割キーの条件が指定された際、該当するパーティションだけを走査し不要なパーティションを走査対象から除外する高速化機能
- ローカルパーティション索引:テーブルと同じ分割キーで分割された索引。古いパーティションをDROPしても他パーティションの索引が維持されるため運用性が高い
- グローバル索引:テーブル全体で単一のB+木を構成する索引。パーティションをDROPすると索引全体が無効化(または再構築が必要)になる点に注意
午後I・午後II記述試験での攻略ポイント
午後試験で「大量の古い履歴データの削除処理を高速化し、かつオンライン処理へのロック影響やログ発生量を抑えるにはどうすべきか」と問われたら、『履歴年月日でレンジパーティショニングを行い、パーティション単位で削除(DROP PARTITION / TRUNCATE PARTITION)する』という設計方針を想起してください。
午後記述で使える加点キーワード(クリックでコピー)
この用語が出題された過去問を解く(1分演習)
即時アウトプットで定着データベーススペシャリスト 過去問演習で実践力を鍛える