1. ホーム
  2. sql

[解決済み] PostgreSQLのテーブルの大きさはどれくらいですか?

2022-05-01 21:16:35

質問

会社のRoRプロジェクトで設計をしているのですが、開発チームはすでに設計、特にデータベースについてちょっとした議論に遭遇しています。

というモデルがあります。 Message を永続化する必要があります。これは id 以外に 3 つの db カラムしかない非常に小さなモデルですが、本番稼動時にはこのモデルが大量に発生する可能性があります。1日あたり100万件の挿入を想定しています。モデルの検索は、インデックスを付けられる2つの外部キーによってのみ行われる予定です。また、モデルを削除する必要はありませんが、3ヶ月ほど経ったモデルを保管する必要もありません。

そこで気になるのは、このテーブルをPostgresで実装した場合、パフォーマンスに大きな問題が生じるかどうかということです。どなたか、非常に大規模なSQLデータベースの経験をお持ちの方で、これが問題になるかどうかを教えていただける方はいらっしゃいますか?また、もしそうなら、どのような代替手段を取るべきでしょうか?

解決方法は?

テーブルの行数は、それ単体では問題になりません。

つまり、大雑把に言って1日100万行×90日で9000万行ということですね。あなたのやっていることの詳細を知らなくても、Postgresがそれに対応できない理由はないでしょう。

データの分布にもよりますが、インデックス、フィルタードインデックス、テーブルパーティショニングを組み合わせて使用することで、パフォーマンスの問題があるかないかを確認した上で、スピードアップを図ることができます。この問題は、他のどのRDMSでも同じでしょう。 3ヶ月分のデータしか必要ないのであれば、それ以上必要ないデータを切り捨てるプロセスを設計してください。そうすれば、テーブル上のデータ量は一定に保たれます。 どれだけのデータが存在するのかが分かっているのは幸運なことで、そのボリュームでテストを行い、結果を確認することができます。9000万行のテーブルをテストするのは、次のように簡単だ。

select x,1 as c2,2 as c3
from generate_series(1,90000000) x;

https://wiki.postgresql.org/wiki/FAQ

Limit   Value
Maximum Database Size       Unlimited
Maximum Table Size          32 TB
Maximum Row Size            1.6 TB
Maximum Field Size          1 GB
Maximum Rows per Table      Unlimited
Maximum Columns per Table   250 - 1600 depending on column types
Maximum Indexes per Table   Unlimited