官方技術文檔翻譯,英文原文連結: https://docs.datastax.com/en/dse/6.7/dse-dev/datastax_enterprise/config/configChooseCompactStrategy.html?spm=a2c6h.12873639.0.0.e52f23ab7LVCX
6"
要選擇合适的壓實政策:
- 需要了解壓實和壓實政策是如何工作的,請閱讀“如何維護資料?“
- 審視您的應用程式的需求,使用此資訊來回答下面的問題。
- 配置表使用最合适的政策。
- 根據你的資料測試壓實政策。
一、 哪種壓實政策是最好的?
以下問題是基于使用這些壓實政策的開發者和使用者的經驗提出的
Ø 您的表是否處理時間序列資料?
如果是,您最好的選擇是TWCS.如果不是,下面的問題會引入其他考慮,以指導您的選擇。
Ø 您的表是讀多寫少,還是寫多讀少?
LCS是一個很好的選擇,如果你的表資料讀取是寫入的兩倍甚至更多,特别是随機讀。如果讀寫的比例接近,LCS的性能消耗可能并不值得使用。請注意,LCS很快會被大量的寫入壓垮。
Ø 您表中的資料是否經常發生變化?
LCS的一個優點是,它将相關聯的資料儲存在一小組SSTable中。如果您的資料是靜态不變或不頻繁更改,STCS壓縮可以完成同樣的SSTable分組,而不需要LCS一樣的性能開銷。
Ø 您是否需要可預測的讀寫活動級别?
LCS壓實政策保持SSTable檔案在可預測的大小和數量。例如,如果您的表的讀/寫比率很小(寫多讀少),但是期望讀操作符合SLA,則為了在可預測的水準上保持讀速率和讀延遲,可能值得使用LCS,犧牲表的寫性能,您可以通過水準擴充(添加更多的節點)來克服這種寫性能問題。
Ø 您的表是否用于批處理程序?
在批量讀和批量寫過程中,STCS的性能優于LCS.批處理過程很少或沒有碎片,是以不能發揮LCS的長處;批處理程序可能壓跨使用LCS壓實政策的表。
Ø 您的系統磁盤空間是否非常有限?
LCS處理磁盤空間比STCS更有效率:基于正在壓實的資料檔案的占用空間,它僅需要大約10%的額外空間。在某些情況下,STCS和DTCS通常需要50%的額外空間。(DateTieredStorageStrategy (DTCS)廢棄)
Ø 你的系統達到I/O極限了嗎?
LCS比DTCS或STCS的I/O強度要大得多,使用LCS可能會引入額外的I/O負載,進而抵消了LCS帶來的優勢。
二、 配置和運作壓實
使用CREATE TABLE或者ALTER TABLE設定表的壓實政策,具體請參見表_配置項
您可以手動使用nodetool compact指令啟動壓實操作。
三、 測試壓實政策
關于哪個壓實政策最适合您的系統的建議:
- 建立一個三節點的叢集,使用一個壓實政策,用cassandra-streess工具對叢集進行壓測,并分析結果。
- 在現有叢集上建立一個節點,并使用寫調查模式來對實時資料采樣。