Vertica “ERROR: Too many ROS containers exist”,verticacontainers

來源:互聯網
上載者:User

Vertica “ERROR: Too many ROS containers exist”,verticacontainers

原文連結:Vertica “ERROR: Too many ROS containers exist”

最近在用Vertica的時候碰到一個問題,Vertica在運行了一段時間後總是出現類似下面的錯誤

java.sql.SQLException: [Vertica][VJDBC](5065) ERROR: Too many ROS containers exist for the following projections: <projection> (limit = 18078, ROS files = 12088, DV files = 5992, new files = 10)

碰到找個問題就不得不說說Vertica的儲存機制了。Vertica在預設情況下會把新寫入的資料寫入到WOS(寫最佳化)中,然後根據一定的條件(比如說一定的時間周期)再把WOS中的資料寫入到ROS(讀取最佳化)中,這時ROS有可能很多都是很小資料區塊的片段,這是Vertica會在一定的時間周期後把這些ROS資料區塊合并成大的ROS檔案。


這裡把資料從WOS寫入到ROS的過程Vertica管它叫MoveOut操作,而把零散的ROS合并成大的ROS的過程Vertica管它叫MergeOut操作。


好了,現在來看看我們的問題吧。錯誤裡報的是ROS太多,那可能的原因是
1. WOS寫ROS太多,這個原因的原因很大的可能是每次insert/update的資料集太小,導致產生的片段太多。

2. ROS太多,而配置的MoveOut和MergeOut的時間間隔太長,導致來不及做MoveOut和MergeOut。


好吧來看看我的應用程式吧
1. 針對第一個可能的原因,確實是我們的應用的需求的問題,這個目前來說我們沒法改變。

2. 對於第二個可能的原因,我們查了一下Vertica的資料,在Vertica中預設的MergeOutInterval是600,MoveOutInterval是300。這兩個參數可以通過下面的命令來查看

SELECT GET_CONFIG_PARAMETER('MoveOutInterval');SELECT GET_CONFIG_PARAMETER('MergeOutInterval');

由於我們的應用本身會產生很多的ROS片段,所以我們想到了是不是可以通過減小MoveOut和MergeOut的Interval來讓Vertica儘快的做MoveOut和MergeOut。因此我們修改了Vertica的參數

SELECT SET_CONFIG_PARAMETER('MoveOutInterval', 60);SELECT SET_CONFIG_PARAMETER('MergeOutInterval', 30);

在修改了這兩個參數以後,我們的應用確實在運行了很長時間後都沒有再出現上面的問題了。


其實關於這個問題,還有幾個參數可以調節,具體資料可以參考
Vertica Tuple Mover Parameters






聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.