[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 メーリングリストの案内