2015-07-02 50 views
5

我們已經在PostgreSQL發現一個問題,因爲它不採用單查詢CPU的多核內龐大的數據。例如,我有8個CPU核心。我們有stock.move表中有4千萬條記錄。當我們在單個數據庫連接中應用大量查詢來生成報告時,我們發現只有一個內核被100%使用,其中所有其他7個內核都是空閒的。由於該查詢執行時間需要更長的時間,我們的odoo系統速度較慢。而問題在於postgresql內核。如果無論如何,我們可以在兩個或更多內核之間共享查詢,而不是在postgresql查詢執行中獲得性能提升。之所以Odoo正在緩慢時,有數據庫

我相信通過解決執行並行查詢,我們可以Odoo性能甚至更快。任何人對此有任何建議?

----------- *編輯這個問題,向您展示和PostgreSQL核心委員會* ---------

我在這裏張貼回答我從Postgresql數據庫的最高貢獻者之一得到的答案。 (我希望這個信息將是有益的)

你好西仁,

預期的行爲。 PostgreSQL不支持 單個查詢的並行CPU。這個主題是在高發展,而且很可能,這 功能將在計劃發行9.6〜9月2016年,但表 與40M行不是太大,所以大概更多的CPU應該不是太幫助 你(有一些開銷和處理多CPU 查詢)。你必須使用一些通常的技巧,如物化視圖,預覽... ...這些技巧的主要思想 - 不要嘗試 重複往往相同的計算。檢查PostgreSQL的健康狀況 - 索引, 真空處理,統計,..檢查硬件 - IO的速度。檢查 PostgreSQL配置 - shared_buffers,work_mem。有些查詢可能由於錯誤的估計而緩慢 - 檢查緩慢查詢的解釋。有 是一些工具,可以打破一些查詢更多的查詢,並開始 並行執行,但我沒有使用它。 https://launchpad.net/stado http://www.pgpool.net/docs/latest/tutorial-en.html#parallel

問候帕維爾Stehule

回答

2

嗯,我覺得你有你的答案存在 - 的PostgreSQL目前不支持並行查詢呢。對性能的一般建議非常合適,您也可以考慮分區,這可能允許您截斷分區而不是刪除表的某些部分,或增加內存分配。如果不瞭解更多關於查詢的信息,就不可能提供很好的建議。

曾與這種非並行查詢Oracle系統問題的經驗,我建議你還要考慮你所使用的硬件。

現代潮流走向的CPU有非常多的核心是Web服務器或與許多短命交易的其他多進程系統有很大的幫助,但你有幾個,大宗交易的數據處理系統。您需要正確的硬件來支持該功能。具有更少,更強大的內核的CPU是更好的選擇,並且您必須注意內存和存儲的帶寬。

這就是爲什麼工程系統一直深受大數據和數據倉庫。

+0

PostgreSQL是快速和更好的,在世界上的許多應用程序適用於PostgreSQL的databas和工作正常,但由於Odoo自己的ORM和它的架構非常非常緩慢。即使很多人重複大塊呼叫,並避免。 通過社區努力odoo擁有者現在私下爲企業製作並授權,現在社區沒有足夠的準備好解決他們糟糕的性能問題。 我本人親自託管odoo自己的更正和優化沒有改變postgres數據庫,工作得很好,更好+快。 –

+0

@TejasTank你有什麼建議嗎? – m3asmi

+0

@ m3asmi其配置服務器的私人技能連接snippetbucket.com尋求幫助。 –