我遇到來自十個連接表的大查詢問題。我將數據從廣泛的事實表(f1)遷移到星型模式。我首先填充來自f1的維度表,然後用維度表的連接填充新的事實表(f2)以獲取相應的ID。在Vertica中加入失敗,並顯示「內部分區不適合內存」
不幸的是我得到一個錯誤,「內部分區不適合內存」。從日誌我看到:
2012-10-18 16:20:31.607 Init Session:0x2aac6c02b250 [EE] <INFO> ENABLE_JOIN_SPILL may allow this query to run, with reduced performance
2012-10-18 16:20:31.607 Init Session:0x2aac6c02b250 [EE] <INFO> Query Retry action: Setting add_vertica_options('EE','ENABLE_JOIN_SPILL');
但是,這並不工作,要麼因爲以後我得到:
2012-10-18 16:23:31.138 Init Session:0x2aac6c02b250 [EE] <INFO> Join ((public.owa_search_term_dim x public.page_impressions_with_session) using owa_search_term_dim_projection_node0001 and previous join (PATH ID: 7)) inner partition did not fit in memory; value
2012-10-18 16:23:31.138 Init Session:0x2aac6c02b250 [EE] <INFO> Query Retry action: Swapping join order with override: 1|7|0
這推移了一段時間,而Vertica的顯然是試圖找到執行的方式加入,但最終保留一個錯誤,說聯接不適合內存。
有沒有關於如何儘量減少執行連接所需的內存或爲什麼溢出到磁盤不工作的任何提示?我可以處理性能問題,我只需要能夠執行查詢。
這些都是很好的建議。我已經在限制數據,每次做一天,而且我已經用很多不同的預測做了很多調整,但我不知道自己的目標是什麼。解釋給了我一個成本估算,但這只是速度而已,對吧?我不知道如何判斷我認爲是問題的內部連接的內存使用情況。 – user997904