PostgreSQLをデータウェアハウスとして使う
(narrator.ai)データ分析による意思決定支援システム Narrative が、経験を通じて整理した主なチューニングポイント
-
本番システムと同じサーバーは使わないこと
-
PG 12+ にアップグレード(CTE は使わないこと)
-
インデックスはできるだけ小さく
-
テーブルパーティショニング(range/list)
-
ディスク I/O を最小化
-
バルクインサート後に Vacuum
-
並列クエリを使う
-
統計サンプリングを増やす(カラムごと、または DB 全体。デフォルト値は 100 だが 500)
-
使用するカラムを減らす(行ベースの保存だから)
-
5,000万〜1億行のテーブルでは Postgres は非常にうまく動作
-
10億件規模にスケールする場合は Citus を推奨
→ https://www.citusdata.com : Postgres を分散 DB に変えてくれるオープンソース
3件のコメント
経験的に見ると、時系列ベースであれば timescaledb のほうが良いのではと思いますが、根拠になる資料がないので慎重にはなりますね。圧縮率や性能の面でも、timescaledb のほうが優れているのではないかと、控えめに意見を残しておきます。
citusとtimescaledbを比較するとどうなるのか気になります。
私の理解では、timescaledb は時系列でパーティショニングする方式に強みがあり、citus はシャーディングに強みがあるので……(そういえば、両方を一緒に使うことも不可能ではなかったりするのでしょうか?)