【ぱーてぃしょにんぐ】

パーティショニング とは?

最終更新:
💡 大きな表を区画分けして、探す範囲を絞る

データベースで、論理的には一つの表を、日付や値などのルールで複数の区画に分けること。検索する範囲を減らしたり、区画ごとにデータを管理したりするのに使う。

📌 このページのポイント
パーティショニング:表を区画分け論理的には一つの表分割キーのルールで振り分けるRANGE範囲で分ける1〜3月4〜6月LIST値で分ける地域:東地域:西HASHハッシュで区画0区画1検索条件に合わない区画を除けると便利
分割方式の例。検索の効果はキー・条件・実行計画で確かめます。
ひよこ ひよこ
パーティショニングは、どんなときに役立つ?
ペンギン先生 ペンギン先生
例えば注文を月別の区画に分け、ある月だけを調べる使い方だよ。検索条件から不要な区画を除外できれば、見る範囲を減らせる。古い月のデータを区画ごとに管理する使い方もあるね。何行を超えたら必ず必要、という固定の基準ではないんだ。
ひよこ ひよこ
RANGE・LIST・HASHって?
ペンギン先生 ペンギン先生
RANGEは日付や数値の範囲、LISTは地域コードなどの値の集合、HASHはキーのハッシュに基づいて振り分けるよ。検索の仕方や保存期間に合わせて選ぶ。ハッシュなら、どんなデータでも完全に同じ件数になるという意味ではないよ。
ひよこ ひよこ
シャーディングとは同じ?
ペンギン先生 ペンギン先生
どちらもデータを分ける考え方だけれど、シャーディングは複数のDBへ分散する文脈で使われるよ。ここではPostgreSQLの一つの表を区画に分ける例を見ている。製品によって分割と配置の仕組みは違うので、サーバー一台に限定された技術とは覚えないでおこう。
ひよこ ひよこ
分ければ、すべての検索が速くなる?
ペンギン先生 ペンギン先生
必ずではないよ。プルーニングできる条件か、実行計画で確かめよう。対象の区画の中でインデックスが役立つこともある。区画が多すぎると計画やメモリの負担になり得るし、一意制約などの条件も製品ごとに確認が必要だね。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「パーティショニング」って出てきたら「大きな表を区画に分けて、検索や管理をしやすくすること」と思えばだいたいOK!
📖 おまけ:英語の意味
「Partitioning」 = 分割すること
💬 Partition(区画・仕切り)から。テーブルを仕切って区画分けするイメージ

参考資料

← 用語集にもどる