在讀取路徑中,cassandra將磁碟(sstables)中的資料與ram(memtables)中的資料合併。
為了避免為每個sstable資料檔案檢查所請求的分割槽,cassandra採用了一種稱為bloom過濾器的資料結構。
bloom過濾器是一種概率資料結構,允許cassandra確定兩種可能狀態之一: - 資料肯定不存在於給定檔案中,或 - 資料可能存在於給定檔案中。
雖然bloom過濾器不能保證資料存在於給定的sstable中,但是通過消耗更多的ram來使bloom過濾器更準確。
運算子有機會通過將bloom_filter_fp_chance調整為0到1之間的浮點來調整每個表的此行為。
對於使用水平壓縮策略(leveledcompactionstrategy)的表,bloom_filter_fp_chance的預設值為0.1,對於所有其他情況,預設值為0.01。
bloom過濾器儲存在ram中,但儲存為非堆,因此,操作員在選擇最大堆大小時不應考慮bloom過濾器。
隨著精度提高(當bloom_filter_fp_chance接近0時),記憶體使用非線性增加,bloom_filter_fp_chance = 0.01的bloom過濾器將需要大約是與bloom_filter_fp_chance = 0.1相同的表的三倍的記憶體。
bloom_filter_fp_chance的典型值通常在0.01(1%)到0.1(10%)的假陽性機率之間,cassandra為了發現一條資料可能掃瞄一行的sstable。
引數應根據用例調整:
bloom過濾器假陽性機會在describe table輸出中作為欄位bloom_filter_fp_chance可見。
運算子可以使用alter table語句更改該值:
alter table keyspace.table with bloom_filter_fp_chance=0.01
但是,操作員應該注意,此更改不是立即的:bloom過濾器是在寫入檔案時計算的,並作為sstable的filter元件保留在磁碟上。
在發出alter table語句時,磁碟上的新檔案將使用新的bloom_filter_fp_chance寫入,但現有的sstables將不會被修改,直到它們被壓縮。 如果操作員需要更改的bloom_filter_fp_chance立即生效,他們可以使用
nodetool scrub或nodetool upgradesstables -a
觸發sstable重寫
,兩者都將重建磁碟上的sstables,在進度中重新生成bloom過濾器。
Cassandra 基本操作
嘗試乙個新的軟體 跑通乙個簡單的demo是必須的,下面的教程是我見到的最簡單的乙個,特地無恥的抄襲一下,時間略久了。啟動cassandra之後,我們可以用cassandra的命令列來執行cassandra的基本操作 先啟動cassandra cli 連線到cassandra服務 test clust...
cassandra常用基本操作
16.查詢系統鍵空間 select from system.schema keyspaces 17.修改keyspace alter keyspace wuzna with replication 18.durable writes 此選項,可以指示cassandra是否對當前keyspace的更新...
cassandra關於集合型別的操作
舉例 create table test a int,b list,c set,d map,primary key a 插入使用下面的形式 insert into test a,b,c,d values 1,listtext1 listtext2 第一 list型別 增加元素 update test...