2014-02-18 27 views
37

我正在爲我的公司開發RoR項目的設計,而我們的開發團隊已經對設計,特別是數據庫進行了一些爭論。PostgreSQL表格有多大?

我們有一個名爲Message的模型,需要持久化。這是一個非常非常小的模型,只有三個db列而不是id,但是當我們投入生產時,可能會有很多這些模型。我們每天看多達1,000,000次插入。這些模型只能通過兩個可以索引的外鍵來搜索。同樣,模型也不需要刪除,但我們也不需要保留它們,大約三個月後。

那麼,我們想知道的是,如果在Postgres中實現此表將會出現重大性能問題?有沒有人有非常大的SQL數據庫的經驗告訴我們這是否會成爲問題?如果是這樣,我們應該選擇什麼替代方案?

+0

具有良好的緩存層和PG中的一些小配置,你應該沒問題。您應該逐個處理性能問題並避免預優化。也就是說,分區和複製總是很好的選擇,一旦遇到瓶頸,您可以利用它。 –

+1

相關問題[這裏](http://stackoverflow.com/questions/13639626/database-columns-in-select-or-create-statements/13639920#13639920)和[這裏](http://stackoverflow.com/ 12606842 /什麼,是最最大用戶號碼的柱-IN-A-PostgreSQL的選查詢)問題/。 –

+1

我們每天在一個5+ TB的PostgreSQL數據庫中處理大約3000萬條消息,工作正常。 –

回答

41

每張表的行數不會是它自己的問題。

所以粗略地說,90天每天100萬行是9000萬行。我認爲沒有理由Postgres無法處理這個,不知道你在做什麼的所有細節。

根據您的數據分佈情況,您可以使用混合索引,篩選索引和某種表格分區來加速事情,一旦您看到可能存在或可能不存在的性能問題。你知道的任何其他RDMS的問題都是一樣的。如果您只需要在一個過程中進行3個月的數據設計以刪除不再需要的數據。這樣你就可以在桌面上獲得一致的數據量。你很幸運,你知道有多少數據存在,爲你的音量測試它,看看你得到了什麼。測試一個表,9000個多萬行可能那麼容易,因爲:

select x,1 as c2,2 as c3 
from generate_series(1,90000000) x; 

http://www.postgresql.org/about/

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 
+9

我同意9000萬行不會成爲PostgreSQL的問題。但是它可能會成爲PostgreSQL ORM的一個問題。 (實際上是一個帶有任何dbms的ORM) –

+0

@ MikeSherrill'Catcall'好點,我只關注「PostgreSQL表格有多大?」 – Kuberchaun

+0

@ MikeSherrill'CatRecall'爲什麼它可能是一個ORM的問題? :) – yeyo

20

另一種方式來加快查詢速度顯著上>億行的表是下班時間集羣該索引中的表格最常用於查詢中,爲 。我們有一個擁有2.18億行的桌子,並且發現了30X的改進。