TDSQL數(shù)據(jù)庫(kù)工程師培訓(xùn)實(shí)戰(zhàn)教程
LSM-Tree性能的衡量主要考慮三類(lèi)因素:空間放大、讀放大和寫(xiě)放大。
第一類(lèi)因素是空間放大(已報(bào)名底部評(píng))。在LSM-Tree中所有寫(xiě)操作都是順序追加寫(xiě),數(shù)據(jù)的更新操作則是通過(guò)創(chuàng)建一個(gè)新的空間來(lái)存儲(chǔ)新值,即out-place update。與此同時(shí),因?yàn)榕f值不會(huì)立即被刪除,因此會(huì)占用部分空間。實(shí)際上這部分冗余數(shù)據(jù)占用空間的大小要遠(yuǎn)大于有效數(shù)據(jù)本身,這種現(xiàn)象被稱(chēng)為“空間放大”。LSM-Tree會(huì)利用compaction操作來(lái)清理舊數(shù)據(jù)從而降低空間放大。
第二類(lèi)因素是讀放大。在LSM-Tree、B+樹(shù)等外存索引結(jié)構(gòu)中,進(jìn)行讀操作時(shí)需要按從上到下的順序一層層去讀取存儲(chǔ)節(jié)點(diǎn),如果想讀一條數(shù)據(jù),就會(huì)觸發(fā)多次操作,即一次讀操作所讀到的數(shù)據(jù)量實(shí)際上要遠(yuǎn)大于讀目標(biāo)數(shù)據(jù)本身,從而影響讀性能,這種現(xiàn)象被稱(chēng)為“讀放大”。
????
第三類(lèi)因素是寫(xiě)放大。在LSM-Tree中,compaction操作會(huì)將多個(gè)SST文件反復(fù)讀取,合并為新的SSTable文件后再次寫(xiě)入磁盤(pán),因此導(dǎo)致一條kv數(shù)據(jù)的多次反復(fù)寫(xiě)入操作,由此帶來(lái)的IO性能損失即寫(xiě)放大。