我有一个非常以写为中心的应用程序,它使用 postgres hstore。我的典型工作流程是 aSELECT
后跟多个UPDATE
s 或INSERT
s(主要是前者)。这通常以每秒约 500 个“任务”的速度发生。
所以我的单个 postgres 实例无法应付。我看到 postgres 服务器是 cpu 绑定的,并且 postgres 进程UPDATE
一直在运行。磁盘 I/O 看起来很好,我有足够的可用内存(44GB,48GB)。我已经尝试按照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>
挖掘后,我发现了两个声称有助于提高写入性能的项目:
对于我的(相当简单的)工作流程,您会推荐哪个?
(是的,我尝试过 mongo,但是,我错过了 SQL 的查询示意图)