elasticsearch寫入資料的儲存過程

2021-08-17 06:51:42 字數 425 閱讀 2503

es建索引寫入資料,資料最先是存在記憶體buffer裡的,然後再刷入到lucene的底層檔案segment中;寫入segment完畢後再執行refresh操作,refresh操作後,資料將commit到磁碟中。資料刷入到了磁碟,就可以執行查詢操作了。

過程簡單描述如下:記憶體buffer-->segment-->refresh-->磁碟

注意,這些過程,會有translog記錄;translog存在的意義就是保證資料刷入的可靠性;因為我們剛才說過,es建索引寫入資料的過程是記憶體到磁碟的過程,這個過程有日誌的記錄,那就是translog,當資料還在記憶體裡沒刷到磁碟中時,如果伺服器down了又沒translog機制的話,那麼資料就會丟失,有了translog,伺服器down機後再起來,就能很快恢復寫入的過程。

這裡要注意的是,translog也是先存在記憶體裡的,然後預設5秒刷一次寫到硬碟裡。

Elasticsearch的寫入優化

再次優化的寫入流程 1 資料寫入buffer緩衝和translog日誌檔案 2 每隔一秒鐘,buffer中的資料被寫入新的segment file,並進入os cache,此時segment被開啟並供search使用 3 buffer被清空 4 重複1 3,新的segment不斷新增,buffer不...

ElasticSearch寫入效能優化

增大寫吞吐量,越高越好 可以通過效能測試,確定最佳文件數量 多執行緒 需要觀察是否由http429返回,實現retry以及執行緒數量的自動調節 使用更好的硬體 通過觀察cpu io block 執行緒切換 堆疊狀況 使用es自動生成的文件id 可以避免get操作 一些相關的es配置,如refresh...

CFile建立檔案,寫入,寫入完畢

1.檔案建立 cfile m file m file.open sfilename,cfile modecreat cfile modewrite 第乙個引數是建立的檔案的名稱 第二個引數意義是建立檔案及建立乙個可寫的檔案 2.檔案的寫入 m file.write sdata,sdata.getle...