我有一個非常寫的使用postgres hstore的中心應用程序。我的典型工作流程是SELECT
,然後是UPDATE
s或INSERT
s(主要是前者)。這通常發生在每秒約500個'任務'。寫縮放postgresql
所以我的單個postgres實例無法應付。我看到postgres服務器是cpu綁定的,並且postgres進程始終是UPDATE
。磁盤I/O顯示正常,我有大量的內存空間(44GB中的48)。我試過按照postgres's wiki page和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
S的是類型:
UPDATE <table> updated_at=<date> WHERE id=<id>
在挖掘時,我發現,聲稱幫助兩個項目具有寫入性能:
這將你推薦給我(相當簡單)的工作流程?
(是的,我已經試過蒙戈,但我錯過了SQL的查詢圖表)
我認爲postgres-r還沒有真正完成 - 絕對沒有準備好生產。所以這讓你用postgres-xc。其他選項可能是Bucardo或PL/proxy(這基本上是通過PL/pgSQL進行「手動」分片) – 2013-02-28 09:09:04
嘗試詢問[pgsql-performance]列表(http://www.postgresql.org/community/lists/)列表,你會得到更具體的提示爲您的具體情況。但是你必須提供更詳細的信息,而不是簡單的「不能應付」。 – vyegorov 2013-02-28 11:13:14
詳情請。 '對相關查詢進行EXPLAIN(BUFFERS,ANALYZE)',並用'SELECT'和後續更新顯示一個典型的批處理。一般來說,儘量減少往返次數,儘量在數據庫中做更多的事情,並做更少的更大的交易。 – 2013-02-28 14:39:36