1
我的操作是以下幾點:插入之後重命名集合名稱異常
使用INSERT腳本,將在「節點」收藏集萬份文檔。 ArangoDB消耗30MB內存。
將'Node'集合重命名爲「Node_temp」。
使用插入腳本在「節點」集合中插入100個文檔。它是成功的。
這些操作後,我發現一個問題。在Admin webUi(ArangoDB)中,當我點擊「節點」查找「集合」頁面中的文檔時,很長時間沒有迴應。 ArangoDB消耗900MB內存。經過很長時間(超過5分鐘)後,網頁打開,顯示「節點」集合中有100萬個文檔。我認爲在重命名操作中可能有些問題。
我只是試圖重現這一點,並沒有遇到任何問題。重命名工作,插入集合「節點」失敗,我沒有遇到很長的加載時間打開集合「Node_temp」(「節點」已經因爲重命名已經消失)。我使用ArangoDB 2.2.4和ArangoShell作爲客戶端。我的測試腳本是:'db._drop(「Node_temp」); db._drop( 「節點」); db._create( 「節點」); for(i = 0; i <1000000; ++ i)db.Node.save({value:i}); c.rename( 「Node_temp」); for(i = 0; i <100; ++ i)db.Node.save({value:i});' – stj 2014-10-07 16:11:50
我認爲你的操作是不同的。我使用perl和ArangoDB 2.2.4,但我認爲結果應該是一樣的。在「c.rename(」Node_temp「);」之後「 ,你執行db._create(「Node」);然後「for(i = 0; i <100; ++ i)db.Node.save({value:i});」。最後,你打開集合「節點」。你會發現問題。 – Hansen 2014-10-07 16:19:06
想想我明白了,雖然這個問題不能完全重現,但真的很難弄清楚。似乎發生的情況是集合名稱的服務器端緩存並非總是對所有線程無效。這可能導致一些操作指向「舊」集合「Node_temp」(最初名爲「Node」的集合),但僅在某些情況下並且在某些情況下。這也混淆了Web界面,它在「Node_temp」集合上發佈了一個非常昂貴的選擇查詢,該集合旨在運行在更小的「Node」集合上。 – stj 2014-10-08 13:58:09