パーティション
#db
パーティションとは
テーブルの特定のカラムを分割キー(パーティション化キー)として、その値の種類によってテーブルを物理的に複数のセグメントに分割する機能。
特徴
細かい利点は色々あるにせよ、大まかには2つの利点が存在する。
1. SQLによるアクセスの物理領域を一部に限定できるため、読み込み処理の高速化が可能(パーティションプルーニング)
2. パーティションごとに物理領域が分割されることで、パーティション単位でDROP、TRUNCATEを実施できる。(削除の効率化)
またパーティション毎に処理実施することで、効率的な並列処理も可能。
https://scrapbox.io/files/63beabb656f2c7001e726d7d.png
パーティションの種類
種類は基本的には3つあり、それぞれのメリデメの特徴を掴んで使い分けると良い。
レンジ
分割キーの値の範囲でレコードを振り分ける方法。
ex)2022/6用の領域、2022/7用の領域といった感じで分ける。
ハッシュ
分割キーの値をハッシュ化し、そのハッシュ値を元に振り分ける方法。
特徴
パーティションの数は固定で決まっており、それらに自動で均等に割り振れる。
キーの値の偏りが大きいと、より均等にデータ数が分けられる。
リスト
分割キーの固定値を元にレコードを振り分ける方法。
ex)都道府県などの数が少ないリスト値とかで利用
デメリット
分割し過ぎると逆に性能が悪くなる可能性がある
INSERTは非パーティションテーブルよりも少し遅くなる
区分け領域にデータ挿入する前に、親テーブルを仲介するため
複雑なクエリだと性能低下する可能性がある
運用にてパーティションの偏りが出てくると、メンテナンスする必要がある。
例えば、時系列のパーティショニングの場合、新しいパーティション追加する必要がある。
インデックスと実データのパーティションは揃える必要がある。
参考
[超図解]パーティション化(1/5) パーティション事始め - DBひとりでできるもん
パーティションテーブルについて - SQLer 生島勘富 のブログ
パーティショニング : 用途と利点 | Let's POSTGRES
津島博士のパフォーマンス講座  第10回 パーティションについて