2015-09-03 24 views
1

我知道這是一個刪除行的cassandra反模式(並且更經常這樣做),但在我的簡單用例中我有一個本地cassandra(單實例,複製因子設置爲1),我用於單元測試,在運行之前刪除所有表,自然執行清理板的測試。用於測試的本地cassandra隨着時間的推移變得越來越慢

隨着時間的推移,這個cassandra實例的性能極度下降。它讓我感到很吃驚,放棄密鑰空間一點都沒有幫助。只有手動刪除cassandra數據目錄中的所有內容,我才能恢復所有的性能。

這個解決方案對我來說很好,因爲我不關心我一遍又一遍刪除的測試數據,但是在文件系統上手動刪除這些東西肯定感覺有點奇怪。有沒有更好的方法來處理這種情況?或者我是否完全錯誤地處理這個整個案例?

+1

你有沒有試過ccm? https://github.com/pcmanus/ccm使創建/刪除羣集變得如此簡單,並且您可以輕鬆地編譯不同版本的cassandra進行測試 – LHWizard

回答

3

根據所提供的資料很少,我將提供一些信息:

首先,刪除數據,創建卡桑德拉墓碑。默認行爲是將這些墓碑保留10天,由變量gc_grace_seconds設置。

鑑於您只有1個節點,並且在刪除數據後不關心數據,您可以將gc_grace_seconds設置爲零。在做大量刪除之後,您還可以確保運行壓縮。

文檔瀏覽:

http://docs.datastax.com/en/cql/3.1/cql/cql_reference/tabProp.html

http://docs.datastax.com/en/cassandra/2.0/cassandra/tools/toolsCompact.html

最後,還有被稱爲TTL,生存時間的特點。您可以使用它來代替刪除,並在數據過期後讓數據庫執行「刪除」操作。如果你走這條路線,我仍然會將gc_grace_seconds設置爲零並運行壓縮(通過每小時一次的cronjob,因爲它是一個開發環境)。

+0

謝謝!我會嘗試你的建議,看看會發生什麼(我實際上做了壓縮並且沒有幫助,但是我對cassandra仍然很陌生,也許我做了錯誤的事情,所以我會進一步閱讀這方面的內容) –

相關問題