2022-09-22 順序IO與隨機IO

1.磁盤IO

https://tech.meituan.com/2017/05/19/about-desk-io.html

PageCache BufferCache

2.順序IO與隨機IO

https://www.zhihu.com/question/370950509

BTrees

寫:將要寫的block加載到內(nèi)存,然后更新放回PageCache或者同步刷盤;當要寫的數(shù)據(jù)位于不同block時,就涉及多個頁,需要隨機寫

讀:首先加載根節(jié)點對應(yīng)的block,然后不斷找對應(yīng)的子節(jié)點,每次換頁都需要加載對應(yīng)的數(shù)據(jù)到內(nèi)存,但是整體幾乎是順序讀,對范圍查詢友好

LSM+SSTable

寫:先寫到memtable,然后到達閾值寫到磁盤(這是一整塊寫,順序?qū)懢蛪蛄耍鄠€SSTable的合并會造成讀寫放大,但是合并相當于兩段有序數(shù)據(jù)的合并,時間復(fù)雜度是o(n)

讀:先判斷在不在內(nèi)存的memtable,取決于內(nèi)存的數(shù)據(jù)結(jié)構(gòu)一般很快;不在的話,按照層級去讀SSTable,先讀Footer,得到Index和Filter,利用Filter過濾不存在的大部分情況,剩下的數(shù)據(jù)通過Index找到區(qū)間,然后讀出相關(guān)數(shù)據(jù);SSTable是允許key重復(fù)的,利用時間的most recent原則拆分數(shù)據(jù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容