配置memtable閾值

配置memtable閾值

配置memtable閾值可以提高寫入性能。Cassandra將memtables刷新到磁盤,並在超過提交日誌空間閾值或memtable清除閾值時創建SSTables 。配置cassandra.yaml中每個節點的提交日誌空間閾值 。如何調整memtable的閾值取決於數據和寫入負載。在這些條件下增加memtable閾值:

  • 寫入負載在較小的一組數據上包含大量的更新。

  • 連續的寫入發生。這一行動導致更有效的壓縮。

爲memtables分配內存將減少可用於緩存和其他內部Cassandra結構的內存,因此請仔細調整並以小增量調整。

Memtable設置

  • memtable_allocation_type:默認heap_buffers,Cassandra用來分配和管理memtable內存的方法。在版本3.2.0和3.2.1中,唯一有效的選項是: heap-buffers(在堆NIO (非阻塞I / O)緩衝區上)。

  • memtable_cleanup_threshold:默認1 /(memtable_flush_writers + 1)

  • file_cache_size_in_mb:默認較小的1/4 heap或512,用於SSTable讀緩衝區的總內存。

  • buffer_pool_use_heap_if_exhausted :默認true,指示當SSTable緩衝池耗盡(當緩衝池超過最大內存file_cache_size_in_mb時),Cassandra是否分配堆內或堆外內存,超出此數量時,Cassandra會停止緩存緩衝區,但根據要求分配。

  • memtable_flush_writers :默認內核數量最少爲2,最多爲8,memtable刷新寫入程序線程的數量。這些線程被磁盤I / O阻塞,每個線程在被阻塞的時候在內存中保存一個memtable。如果您的數據目錄由SSD支持,請將此設置增加到核心數量。

提交日誌設置

  • commitlog_sync :默認periodic,用於確認寫入的方法,以毫秒爲單位:

    • periodic:10000毫秒(10秒)使用 commitlog_sync_period_in_ms控制提交日誌同步到磁盤的頻率。定期同步立即得到確認。

    • batch:默認disabled,通過 commitlog_sync_batch_window_in_ms (默認值:2 ms)控制Cassandra在執行同步之前等待其他寫入的時間。啓用此方法後,Cassandra不會確認寫入,直到它們被磁盤讀取爲止。

  • commitlog_segment_size_in_mb :默認32 MB,單個提交日誌文件段的大小。在將所有數據刷新到SSTable之後,可以對commitlog段進行歸檔,刪除或回收。這些數據可能包含系統中每個表的提交日誌段。默認大小通常適用於大多數提交日誌歸檔,但如果您想要更精細的粒度,則8或16 MB是合理的。
    默認情況下,max_mutation_size_in_kb被設置爲的一半commitlog_segment_size_in_kb。

  • max_mutation_size_in_kb :默認commitlog_segment_size_in_mb的 1/2 。如果突變的大小超過這個值,則突變被拒絕。在增加commitlog段的commitlog段的大小之前,調查爲什麼突變比預期的大。查找訪問模式和數據模型的基本問題,因爲增加commitlog段的大小是一個有限的修復。
    注意:如果max_mutation_size_in_kb 明確設置 ,則必須commitlog_segment_size_in_mb至少設置 max_mutation_size_in_kb / 1024的兩倍。

  • commitlog_compression :默認not enabled,壓縮提交日誌時使用的壓縮器。有效值: LZ4,Snappy或 Deflate。如果沒有爲此屬性設置值,則提交日誌將被解壓縮。

  • cdc_total_space_in_mb:默認4096 MB和佔用的驅動器總空間的1/8cdc_raw_directory 。
    注意:如果空間超過這個值,Cassandra將會拋出 WriteTimeoutException包括啓用CDC的表在內的Mutations。CDCCompactor(消費者)負責解析原始CDC日誌,並在解析完成時將其刪除。

  • cdc_free_space_check_interval_ms:默認250 ms,當達到cdc_raw限制並且CDCCompactor運行在後面或遇到背壓時,將檢查此間隔以查看cdc跟蹤表的任何新空間是否已經可用。

  • commitlog_total_space_in_mb :默認32位JVM爲32 MB,64位JVM爲8192 MB。
    注意:用於提交日誌的總空間。如果所有提交日誌使用的總空間高於此值,則Cassandra將舍入到下一個最接近的多個數據塊,並將memtables刷新到最舊的commitlog段的磁盤,從提交日誌中刪除這些日誌段。這減少了在啓動時重播的數據量,並防止不經常更新的表無限期地保持提交日誌段。如果 commitlog_total_space_in_mb 很小,結果是在較不活躍的表格上更具活性。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章