私は、それぞれが0から10,000の範囲で、浮動小数点数として格納されている数値のペア(A、B)を保持する巨大なデータベースを持っています。
例えば、
(1, 9984.4), (2143.44, 124.243), (0.55, 0), ...
これらのペアを格納するPostgreSQLテーブルが非常に大きくなったため、継承するサブテーブルに分割することにしました。それぞれが1000x1000の範囲を格納する100個のそのようなテーブルを作成するつもりです。
問題は、これらの番号が近くの番号の大きな塊になる傾向があることです。これは、将来、一部のテーブルがほぼ空になり、一部のテーブルがデータベースの非常に大きな部分を保持することを意味します。残念ながら、将来のペアの分布はまだ不明です。
テーブルを自動的に再パーティション化する方法を探しています。つまり、特定のサブテーブルが特定の数を超えるペアを保持している場合、それは自動的に4つのサブサブテーブルに分割されます。
私の質問は次のとおりです。
- PostgreSQL 8.3で再帰的なパーティショニングと継承は可能ですか?インデックスとクエリプランはそれを理解しますか?
- サブテーブルが大きくなりすぎたら、サブテーブルを分割するための最良の方法は何ですか?これはライブデータベースではないため、毎週数時間のダウンタイムは完全に許容できることを指摘しておく必要があります。
- 更新:継承するテーブルを4つのテーブルに分割して、元のテーブルを置き換える可能性があります(つまり、マスターテーブルから直接継承します)。複数のレベルの継承は避けますが、テーブルが1つのテーブルから直接継承する場合は数千になります。このアプローチの長所と短所は何ですか?
前もって感謝します、
アダム