[pgsql-jp: 41126] Re: パーティショニングについて
Tomoaki Sato
sato @ sraoss.co.jp
2012年 6月 11日 (月) 18:37:39 JST
佐藤です。
> お世話になります。NAGAURAと申します。
>
> 現在、Ubuntu10.04 32bit Postgresql 8.4.11環境で、Byteaを含むテーブルのパー
> ティショニングを試しています。
>
> キーとなるデータは数字型で年月日+1からの連番で、キーを50で割った余り0〜49の
> テーブルを使うハッシュによる
> パーティショニングを行ってみましたが、SELECT時に全てのテーブルにアクセスして
> いる様でパーティショニングが
> 動作している様に見えない状態で困惑しています。
>
> どなたかアドバイスをお願い致します。
>
> ※データの分割方法として年月日から始まるキーですので、レンジパーティショニン
> グも考慮しましたが、メンテナンス
> 性を考慮するとハッシュパーティショニングを使うべきかと思ってます。
おそらく CHECK 制約が複雑であるためです。
以下に書いてあるように、「列名 = 値」といったような単純な CHECK 制約で
ないと、制約による除外は機能しません。
パーティション制約を簡単にしておいてください。そうしないとプランナは、
パーティションを使う必要がないことを立証できません。前述の例で示した
とおり、リスト分割のために簡単な等号条件を使用してください。また範囲
分割のために簡単な範囲テストを使用してください。手っ取り早い良い方法
は、パーティショニングの制約がパーティション列と B-tree インデックス
作成可能な演算子を用いた定数の比較のみを含んでいることです。
http://www.postgresql.jp/document/8.4/html/ddl-partitioning.html#DDL-PARTITIONING-CAVEATS
----
Tomoaki Sato <sato @ sraoss.co.jp>
SRA OSS, Inc. Japan
pgsql-jp メーリングリストの案内