postgres hstore を使用する非常に書き込み中心のアプリケーションがあります。私の典型的なワークフローは、 a のSELECT
後にいくつかのUPDATE
s またはINSERT
s が続きます (主に前者)。これは通常、1 秒あたり約 500 の「タスク」で発生します。
そのため、私の単一の postgres インスタンスでは対応できません。postgres サーバーが CPU バウンドであり、postgres プロセスがUPDATE
常に実行されていることがわかります。ディスク I/O は正常に表示され、十分な空きメモリがあります (48 GB のうち 44 GB)。postgres の wiki ページと pg_tune に従ってチューニングを試みましたが、もう少しパフォーマンスが必要です。
私のテーブルは次のデザインに従っています:
Column | Type | Modifiers | Storage | Stats target | Description
------------+--------------------------+---------------------------------------------------------------------+----------+--------------+-------------
id | integer | not null default nextval('table_id_seq'::regclass) | plain | |
created_at | timestamp with time zone | not null | plain | |
updated_at | timestamp with time zone | not null | plain | |
context | hstore | default hstore((ARRAY[]::character varying[])::text[]) | extended | |
data | hstore | default hstore((ARRAY[]::character varying[])::text[]) | extended | |
私のほとんどすべてのUPDATE
タイプは次のとおりです。
UPDATE <table> updated_at=<date> WHERE id=<id>
掘り下げたところ、書き込みパフォーマンスに役立つと主張する2つのプロジェクトが見つかりました。
私の(かなり単純な)ワークフローにはどれをお勧めしますか?
(はい、mongo を試しましたが、SQL のクエリ スキーマが恋しいです)