最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

18 基于冷熱數(shù)據(jù)分離方案優(yōu)化后的LRU鏈表,是如何解決之前的問題的?

2023-06-19 00:24 作者:儒猿課堂  | 我要投稿

基于冷熱數(shù)據(jù)分離方案優(yōu)化后的LRU鏈表,是如何解決之前的問題的?


1、對于預(yù)讀以及全表掃描加載進(jìn)來的一大堆緩存頁


現(xiàn)在我們已經(jīng)看完了LRU鏈表的冷熱數(shù)據(jù)分離的方案,那么我們接著看這個(gè)冷熱數(shù)據(jù)分離之后的LRU鏈表,他是如何解決之前遇到的一大堆問題的?


首先我們思考一下,在這樣的一個(gè)LRU鏈表方案下,預(yù)讀機(jī)制以及全表掃描加載進(jìn)來的一大堆緩存頁,他們會(huì)放在哪里?


明顯是放在LRU鏈表的冷數(shù)據(jù)區(qū)域的前面?。?/p>


假設(shè)這個(gè)時(shí)候熱數(shù)據(jù)區(qū)域已經(jīng)有很多被頻繁訪問的緩存頁了,你會(huì)發(fā)現(xiàn)熱數(shù)據(jù)區(qū)域還是存放被頻繁訪問的緩存頁的,只要熱數(shù)據(jù)區(qū)域有緩存頁被訪問,他還是會(huì)被移動(dòng)到熱數(shù)據(jù)區(qū)域的鏈表頭部去。


所以此時(shí)你看下圖,你會(huì)發(fā)現(xiàn),預(yù)讀機(jī)制和全表掃描加載進(jìn)來的一大堆緩存頁,此時(shí)都在冷數(shù)據(jù)區(qū)域里,跟熱數(shù)據(jù)區(qū)域里的頻繁訪問的緩存頁,是沒關(guān)系的!

? ? ? ? ? ?

?

2、預(yù)讀機(jī)制和全表掃描加載進(jìn)來的緩存頁,能進(jìn)熱數(shù)據(jù)區(qū)域嗎?


接著我們看第二個(gè)問題,預(yù)讀機(jī)制和全表掃描機(jī)制加載進(jìn)來的緩存頁,什么時(shí)候能進(jìn)熱數(shù)據(jù)區(qū)域呢?


如果你僅僅是一個(gè)全表掃描的查詢,此時(shí)你肯定是在1s內(nèi)就把一大堆緩存頁加載進(jìn)來,然后就訪問了這些緩存頁一下,通常這些操作1s內(nèi)就結(jié)束了。


所以基于目前的一個(gè)機(jī)制,可以確定的是,這種情況下,那些緩存頁是不會(huì)從冷數(shù)據(jù)區(qū)域轉(zhuǎn)移到熱數(shù)據(jù)區(qū)域的!


除非你在冷數(shù)據(jù)區(qū)域里的緩存頁,在1s之后還被人訪問了,那么此時(shí)他們就會(huì)判定為未來可能會(huì)被頻繁訪問的緩存頁,然后移動(dòng)到熱數(shù)據(jù)區(qū)域的鏈表頭部去!


3、如果此時(shí)緩存頁不夠了,需要淘汰一些緩存,會(huì)怎么樣?


接著我們看,假設(shè)此時(shí)緩存頁不夠了,需要淘汰一些緩存頁,此時(shí)會(huì)怎么做?


那就很簡單了,直接就是可以找到LRU鏈表中的冷數(shù)據(jù)區(qū)域的尾部的緩存頁,他們肯定是之前被加載進(jìn)來的,而且加載進(jìn)來1s過后都沒人訪問過,說明這個(gè)緩存頁壓根兒就沒人愿意去訪問他!他就是冷數(shù)據(jù)!


所以此時(shí)就直接淘汰冷數(shù)據(jù)區(qū)域的尾部的緩存頁,刷入磁盤,就可以了,我們看下圖。

? ? ? ? ? ?

4、之前的一大堆問題解決了嗎?


在這樣的一套緩存頁分冷熱數(shù)據(jù)的加載方案,以及冷數(shù)據(jù)轉(zhuǎn)化為熱數(shù)據(jù)的時(shí)間限制方案,還有就是淘汰緩存頁的時(shí)候優(yōu)先淘汰冷數(shù)據(jù)區(qū)域的方案,基于這套方案,大家會(huì)發(fā)現(xiàn),之前發(fā)現(xiàn)的問題,完美的被解決了。


因?yàn)槟欠N預(yù)讀機(jī)制以及全表掃描機(jī)制加載進(jìn)來的數(shù)據(jù)頁,大部分都會(huì)在1s之內(nèi)訪問一下,之后可能就再也不訪問了,所以這種緩存頁基本上都會(huì)留在冷數(shù)據(jù)區(qū)域里。然后頻繁訪問的緩存頁還是會(huì)留在熱數(shù)據(jù)區(qū)域里。


當(dāng)你要淘汰緩存的時(shí)候,優(yōu)先就是會(huì)選擇冷數(shù)據(jù)區(qū)域的尾部的緩存頁,這就是非常合理的了!他不會(huì)讓剛加載進(jìn)來的緩存頁占據(jù)LRU鏈表的頭部,頻繁訪問的緩存頁在LRU鏈表的尾部,淘汰的時(shí)候淘汰尾部的頻繁訪問的緩存頁了!


問題完美的被解決了。


這就是LRU鏈表冷熱數(shù)據(jù)分離的一套機(jī)制。


5、總結(jié)


通過這幾篇文章的學(xué)習(xí),我們已經(jīng)徹底搞定了LRU鏈表的設(shè)計(jì)機(jī)制,剛加載數(shù)據(jù)的緩存頁都是放冷數(shù)據(jù)區(qū)域的頭部的,1s過后被訪問了才會(huì)放熱數(shù)據(jù)區(qū)域的頭部,熱數(shù)據(jù)區(qū)域的緩存頁被訪問了,就會(huì)自動(dòng)放到頭部去。


這樣的話,實(shí)際上冷數(shù)據(jù)區(qū)域放的都是加載進(jìn)來的緩存頁,最多在1s內(nèi)被訪問過,之后就再也沒訪問過的冷數(shù)據(jù)緩存頁!


而加載進(jìn)來之后在1s過后還經(jīng)常被訪問的緩存頁,都放在了熱數(shù)據(jù)區(qū)域里,他們進(jìn)行了冷熱數(shù)據(jù)的隔離!


這樣的話,在淘汰緩存的時(shí)候,一定是優(yōu)先淘汰冷數(shù)據(jù)區(qū)域幾乎不怎么被訪問的緩存頁的!也希望大家好好吸收這種冷熱數(shù)據(jù)隔離的思想,盡可能讓熱數(shù)據(jù)和冷數(shù)據(jù)分開,避免冷數(shù)據(jù)影響熱數(shù)據(jù)的訪問!


6、一個(gè)發(fā)散思考問題


今天給大家留一個(gè)發(fā)散思考的問題,大家覺得對于這種緩存中同時(shí)包含冷熱數(shù)據(jù)的場景,如果你是在Redis中放了你業(yè)務(wù)系統(tǒng)的很多緩存數(shù)據(jù),其中也是冷熱數(shù)據(jù)都有的,此時(shí)可能會(huì)有什么問題?


那么針對這樣的一個(gè)問題,你是否可以考慮在你自己的緩存設(shè)計(jì)中,運(yùn)用冷熱隔離的思想來優(yōu)化重構(gòu)呢?


這是一個(gè)非常值得思考的問題,請大家積極思考,在評論區(qū)踴躍發(fā)言

End


專欄版權(quán)歸公眾號(hào)儒猿技術(shù)窩所有

未經(jīng)許可不得傳播,如有侵權(quán)將追究法律責(zé)任

18 基于冷熱數(shù)據(jù)分離方案優(yōu)化后的LRU鏈表,是如何解決之前的問題的?的評論 (共 條)

分享到微博請遵守國家法律
赫章县| 呼图壁县| 都兰县| 博白县| 大方县| 连城县| 公安县| 隆子县| 雅安市| 苏尼特右旗| 商丘市| 黑龙江省| 栾城县| 龙井市| 深圳市| 宜阳县| 临安市| 勃利县| 临清市| 邯郸市| 鄂尔多斯市| 上犹县| 宣武区| 河北省| 香河县| 新闻| 合水县| 耒阳市| 佛学| 尉犁县| 武平县| 沾化县| 绥德县| 寻乌县| 缙云县| 石渠县| 开阳县| 高邑县| 疏勒县| 新绛县| 资阳市|