[解決済み] PostgreSQLのテーブルの大きさはどれくらいですか?
質問
会社の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
関連
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQLiteのINSERT/per-secondのパフォーマンスを向上させる
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] テーブルネーミングのジレンマ:単数形と複数形の名前【非公開
-
[解決済み] PostgreSQLのユーザーパスワードを変更する方法を教えてください。
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] カラム名の変更 SQL Server 2008
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Oracleで上位100行を選択する方法は?
-
[解決済み] SQL Server : 列を行に変換する
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] MongoDBに "like "を使ってクエリを実行する方法
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] PostgreSQLからのPL/pgSQL出力をCSVファイルに保存する
-
[解決済み] T-SQLでnot equalには!=と<>のどちらを使うべきですか?
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] "ON UPDATE CASCADE "を使用する場合について