web-dev-qa-db-ja.com

Postgresqlサーバーに適したパーティション

私は500GBRAID 1を使用して、ubuntuに専用のpostgresqlサーバーをセットアップしています。私はこれらすべてにかなり慣れていないので、誰かが私が使用できるシンプルで効果的なパーティショニングスキーマを共有するのではないかと思います。

2
user33169

単一の大きなRAIDでパーティションを作成しても、パフォーマンス上のメリットはあまり得られません(ただし、大きな問題が発生したり、いっぱいになったりすることはありません)。

一般に、自分でサイズを変更することに慣れていない限り、OSのデフォルトを使用し、PGDATAディレクトリを作成する場所に適切なサイズのスペースがあることを確認します。以下のOSパーティションの提案は、私がFreeBSDシステムで使用しているものです。おそらく、Ubuntuでも問題ありません。

 /                    1GB (or larger)
 [SWAP]               2GB or 2*RAM Size
 /var                 10GB
 /usr                 10GB
 /usr/local           15GB
 /tmp                 2GB
 /home                10GB ("Big enough for home directories")
 -------------------------------------------------------------
 (OS Total)           50 GB
 [PGDATA]             Postgres data directory ("The rest")

(Ubuntuは/ usr/localを利用できない場合があります。そうでない場合は、その一部を/ usrに折りたたむことができます)


Re:Postgres固有のパーティショニング。単一のRAID-1でこれを行う場合は、[PGDATA]をDBとトランザクションログを保持するのに十分な大きさにし、さらに成長の余地を残します。

これが実稼働ボックスであり、多くのDBアクティビティが予想される場合は、これを一連のRAID-1に分離して、ディスクアクティビティを分離します(超大容量の場合は、コントローラー間で分割することも検討できます)。 )。

オラクルにはこれに関する多くの優れたホワイトペーパーがあり、それらのデザインを盗むことを強くお勧めします。それらは単純ではありませんが、効果的です。私が使用しているパーティションスキーム(それぞれ独自のディスクペア)は次のとおりです。

[PGDATA]               5-10GB
[PGDATA]/pg_xlog       5-10GB (More if you expect lots of transaction logs)
[PGDATA]/base          Big enough for your database
[PGDATA]/[Tablespace]  Optional - Separate out "high-traffic" table spaces
[PGDATA]/xlog_archive  Big enough for archived transaction logs & dumps
1
voretaq7

私は1秒あたり600から1000トランザクションの間にいくつかの興味深いアクティビティを持つpostgresqlサーバーを持っており、私のパーティショニングは次のようなものです:

/      - 10GB
swap   - 15GB (I have 8GB RAM)
/var   - 20GB
/home  - 60GB (don't ask why, but I think 60gb is too much for home)
pgdata - 100 GB

あなたのデータによると、データの小さな部分が必要な場合に巨大なテーブルをスキャンすることを避けるために、テーブルのパーティション分割に飛び込むと面白いでしょう。たとえば、パーティションテーブルを使用してログを格納しているので、logsというマスターテーブルとYYYYMM_logsという月次テーブルがマスターから継承されています。次に、トリガー関数を使用して、各ログを対応するパーティションテーブルに配置します。

0
boris quiroz