InfluxDB compaction 策略分析

LSM-tree 通過緩存的方式將隨機寫轉(zhuǎn)化為順序?qū)懀詷O大提升寫入性能腺律。compaction 則是 LSM-tree 在盡量不影響寫入性能下保證數(shù)據(jù)有序性的機制,中文可譯為”壓實“湘今。InfluxDB 基于 LSM-tree 的變體 TSM-tree 結(jié)構(gòu)返劲,本文基于 InfluxDB v2.0.3@fe04d34版本塞淹,討論其 compaction 策略窟蓝。

按照 compaction 的輸入數(shù)據(jù)來源,可分為 snapshot compaction 和 level compaction 兩類饱普。所有類型的 compaction 輸出的文件類型都是一樣的 tsm 文件运挫,文件名形式為[generation]-[sequence].tsm状共,其中 generation 可以認為是 tsm 文件對應(yīng)的 compaction 序號,而 sequence 則對應(yīng) TSM-tree 的 level谁帕。需要指出的是峡继,sequence 可能會大于最大 level,即超過4匈挖,那么相應(yīng) sequence 的 level 在邏輯上依然是屬于 level 4鬓椭。

snapshot compaction

對 cache 執(zhí)行的 snapshot compaction,由后臺定時任務(wù)(周期1 s)檢測觸發(fā)关划,觸發(fā)條件為 cache 的大小是否超過閾值(默認25 MB)或 cache 的最近一次寫入時間是否早于閾值(默認4小時),cache 作為輸入翘瓮,輸出 level 1的 tsm 文件贮折,tsm 文件中的數(shù)據(jù)以 series key + field name 為粒度有序排列。

level compaction

對不同 level 的 tsm 文件執(zhí)行的 level compaction资盅,由后臺定時任務(wù)(周期1 s)檢測出發(fā)调榄。實際上,選取 tsm 文件的粒度并不直接是文件呵扛,而是 generation每庆。為了描述準確性,后文都將使用 generation今穿。
TSM-tree 的 compaction 是類似于 RocksDB 的 tiered compaction缤灵,即除最大 level 外,只會對當前 level 的 generation 進行合并蓝晒,在每個 level 可能會形成多個 sorted run腮出,通過犧牲一定的讀放大以減小寫放大,這與時序數(shù)據(jù)寫多讀少的場景需求是匹配的芝薇。
TSM-tree 的最大 level 為4胚嘲,可以根據(jù) level compaction 是否需要合并多個 generation 的 tsm 文件將其分為 level 1-3 compaction 和 full compaction 兩類。

level 1-3 compaction

level 1-3 compaction 主要作用是減小 level 內(nèi)的 generation 的數(shù)量洛二,以及執(zhí)行 tombstone 文件的合并馋劈,觸發(fā)條件是對應(yīng) level 內(nèi)的 generation 超過閾值(level 1 超過8,level 2-3 超過4)晾嘶,或?qū)?yīng) level 內(nèi)存在 tombstone 文件妓雾。

full compaction

full compaction 的主要作用是減少 generation 之間的數(shù)據(jù)冗余,因此通常會涉及多個 generation 合并垒迂。按照數(shù)據(jù)輸入可劃分為 full level compaction 和 optimize compaction君珠。

full level compaction

full level compaction 的掃描范圍為 level 1-3 的generation,觸發(fā)條件為上次寫入時間距今超過閾值(默認4小時)娇斑,這個判定條件會導致在部分場景(如備份還原導致停機超過4小時)觸發(fā)不必要的 full level compaction策添。不是所有 generation 都會參與 compaction材部。數(shù)據(jù)已經(jīng)足夠稠密的 generation(文件大小超過2GB,且文件 block 數(shù)量為 1000唯竹,且無 tombstone 文件)不會參與乐导,當然 level 4 的 generation 也不會參與。

optimize compaction

optimize compaction 主要針對 level 4 的 generation浸颓。數(shù)據(jù)已經(jīng)足夠稠密的 generation(文件大小超過2GB物臂,且文件 block 數(shù)量為 1000,且無 tombstone 文件)不會參與产上。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末棵磷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子晋涣,更是在濱河造成了極大的恐慌仪媒,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件谢鹊,死亡現(xiàn)場離奇詭異算吩,居然都是意外死亡,警方通過查閱死者的電腦和手機佃扼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門偎巢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人兼耀,你說我怎么就攤上這事压昼。” “怎么了瘤运?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵巢音,是天一觀的道長。 經(jīng)常有香客問我尽超,道長官撼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任似谁,我火速辦了婚禮傲绣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘巩踏。我一直安慰自己秃诵,他們只是感情好,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布塞琼。 她就那樣靜靜地躺著菠净,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上毅往,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天牵咙,我揣著相機與錄音,去河邊找鬼攀唯。 笑死洁桌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的侯嘀。 我是一名探鬼主播另凌,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼戒幔!你這毒婦竟也來了吠谢?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤诗茎,失蹤者是張志新(化名)和其女友劉穎工坊,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體错沃,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年雀瓢,在試婚紗的時候發(fā)現(xiàn)自己被綠了枢析。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡刃麸,死狀恐怖醒叁,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情泊业,我是刑警寧澤把沼,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站吁伺,受9級特大地震影響饮睬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜篮奄,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一捆愁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窟却,春花似錦昼丑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春呼奢,著一層夾襖步出監(jiān)牢的瞬間宜雀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工控妻, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留州袒,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓弓候,卻偏偏與公主長得像郎哭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子菇存,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Influxdb中的Compaction操作 Compaction概述 Influxdb的存儲引擎使用了TSM文件...
    掃帚的影子閱讀 1,373評論 0 3
  • 會計師不使用橡皮擦夸研,否則將入獄 不可變存儲結(jié)構(gòu)不允許直接修改記錄,它會向文件追加一條新的記錄依鸥。找到一個key對應(yīng)的...
    Damon_330b閱讀 941評論 0 0
  • 譯者序 本文翻譯自 2006 年 Google 的分布式存儲經(jīng)典論文:Bigtable: A Distribute...
    東京的雨不會淋濕首爾閱讀 1,331評論 0 0
  • 久違的晴天亥至,家長會。 家長大會開好到教室時贱迟,離放學已經(jīng)沒多少時間了姐扮。班主任說已經(jīng)安排了三個家長分享經(jīng)驗。 放學鈴聲...
    飄雪兒5閱讀 7,493評論 16 22
  • 今天感恩節(jié)哎衣吠,感謝一直在我身邊的親朋好友茶敏。感恩相遇!感恩不離不棄缚俏。 中午開了第一次的黨會惊搏,身份的轉(zhuǎn)變要...
    迷月閃星情閱讀 10,551評論 0 11