TL

パーティショニング

大きなテーブルを内部で複数の小さなまとまりに分割する仕組みです。水平・垂直の違い、シャーディングとの関係、利点と注意点を解説します。

中級パーティショニングシャーディングデータベーススケーラビリティ最終更新: 2026-06-06
TL;DR要点だけ先に
  • 1.パーティショニングは1つの大きなテーブルを、ある基準で複数のまとまり(パーティション)に分割する技術。
  • 2.行で分けるのが水平、列で分けるのが垂直。シャーディングは“複数サーバーに分散する水平分割”。
  • 3.古いパーティションの一括削除や絞り込み(プルーニング)で高速化できるが、キー選びと運用が肝。

パーティショニングとは

テーブルの行が数億件に増えると、検索も削除もメンテナンスも重くなります。パーティショニング は、1つの大きなテーブルを、ある基準で 複数の小さなまとまり(パーティション) に分割する仕組みです。アプリからは1つのテーブルに見えますが、DB は内部で適切なまとまりだけを処理します。

水平分割と垂直分割

分け方には大きく2種類あります。

種類何で分けるかイメージ主な狙い
水平分割行(レコード)日付・地域などで行を振り分ける件数の多い表を小分けにする
垂直分割列(カラム)よく使う列と滅多に使わない列を別表へ1行を軽くし、I/Oを減らす

「水平」は同じ列構成のまま行を横に切って配る、「垂直」は列を縦に切って別テーブルに分ける、というイメージです。一般に「パーティショニング」と言うと水平分割を指すことが多いです。

-- 水平分割の例:注文テーブルを月ごとに分ける(レンジ・パーティション)
CREATE TABLE orders (id bigint, created_at date, amount int)
  PARTITION BY RANGE (created_at);

CREATE TABLE orders_2026_06 PARTITION OF orders
  FOR VALUES FROM ('2026-06-01') TO ('2026-07-01');

分け方(パーティションキー)の種類

どの行をどのパーティションに置くかを決める列を パーティションキー と呼びます。代表的な方式は次の通りです。

方式分け方長所短所
レンジ値の範囲で区切る(日付など)期間指定の検索・一括削除が速い特定範囲に偏りやすい
リスト値の集合で区切る(地域コードなど)区分が明確区分の追加運用が要る
ハッシュキーのハッシュ値で振り分け件数が均等になりやすい範囲検索が全体に散る

シャーディングとの関係

混同しやすいのが シャーディング です。両者の関係はこう整理できます。

  • パーティショニング: 多くは 1つのDBサーバー内 でテーブルを分割する。
  • シャーディング: 分割したまとまりを 複数のサーバーに分散 する(=サーバーをまたぐ水平分割)。
観点パーティショニングシャーディング
分割の置き場所同一サーバー内が中心複数サーバーに分散
主な目的管理性・検索の高速化書き込み・容量のスケール
横断クエリ比較的容易難しい(結果のマージが要る)

つまり「シャーディングはサーバーをまたぐ水平分割」と捉えると、両者の違いがすっきりします。

利点

  • プルーニング(枝刈り): WHERE created_at >= '2026-06-01' のようにキーで絞ると、DB は関係するパーティションだけを読み、無関係なまとまりを丸ごとスキップできる。
  • 一括削除が高速: 「古い月のデータを消す」が、該当パーティションを切り離す(DETACH / DROP)だけで済む。DELETE で1行ずつ消すより圧倒的に速い。
  • メンテナンスの局所化: 索引再構築や統計更新を、まとまり単位で行える。
“いつ消すか”が決まっている表に効く

ログやイベント履歴のように「90日より古いものは捨てる」と保持期間が決まっているデータは、日付レンジで分割しておくと運用が劇的に楽になります。古いパーティションを丸ごと切り離すだけで、巨大な DELETE による負荷やロックを避けられます。

注意点

キーに偏りがあると意味が薄れる

パーティションキーの選定がすべてです。アクセスが特定のまとまりに集中する(例:最新月にだけ読み書きが殺到する)と、そこがホットスポットになり、分割の恩恵が出ません。また、検索条件にキーを含めないクエリは全パーティションを横断してしまい、かえって遅くなることもあります。

  • パーティションを後から分け直すのはコストが高いので、最初の設計が重要です。
  • パーティション数を増やしすぎると、計画立案やメンテナンスの管理コストが上がります。

パーティショニングは「巨大化したテーブルを、検索しやすく・捨てやすく保つ」ための基本技術です。まずは保持期間や検索条件がはっきりしている表から、レンジ分割を検討するのがおすすめです。

データベース Article

パーティショニングを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

パーティショニング

比較で見る軸

難易度: intermediate / カテゴリ: データベース / タグ数: 4

導入後に効く点

行で分けるのが水平、列で分けるのが垂直。シャーディングは“複数サーバーに分散する水平分割”。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
intermediate
カテゴリ
データベース
タグ数
4

判断チェックリスト

  • 自社の用途が「パーティショニング / シャーディング」に近いか確認する。
  • 強みである「パーティショニングは1つの大きなテーブルを、ある基準で複数のまとまり(パーティション)に分割する技術。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

パーティショニングシャーディングデータベーススケーラビリティパーティショニングシャーディングデータベーススケーラビリティ
参考: 公式情報