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

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

19 MySQL是如何將LRU鏈表的使用性能優(yōu)化到極致的?

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

MySQL是如何將LRU鏈表的使用性能優(yōu)化到極致的?

1、昨日第一個(gè)思考題的解答


昨天第一個(gè)思考題,我們是讓大家思考一下,在LRU鏈表的冷數(shù)據(jù)區(qū)域中的都是什么樣的數(shù)據(jù)呢?


其實(shí)大家腦筋一轉(zhuǎn)就知道了,大部分應(yīng)該都是預(yù)讀加載進(jìn)來(lái)的緩存頁(yè),加載進(jìn)來(lái)1s之后都沒(méi)人訪(fǎng)問(wèn)的,然后包括全表掃描或者一些大的查詢(xún)語(yǔ)句,加載一堆數(shù)據(jù)到緩存頁(yè),結(jié)果都是1s之內(nèi)訪(fǎng)問(wèn)了一下,后續(xù)就不再訪(fǎng)問(wèn)這些表的數(shù)據(jù)了。


類(lèi)似這些數(shù)據(jù),統(tǒng)統(tǒng)都會(huì)放在冷數(shù)據(jù)區(qū)域里。


2、昨日第二個(gè)思考題的解答


接著我們來(lái)說(shuō)一下昨日第二個(gè)思考題的解答,昨天第二個(gè)思考題是讓大家想了一下,對(duì)于我們開(kāi)發(fā)的Java系統(tǒng),如果在Redis里存放了很多緩存數(shù)據(jù),那么此時(shí)會(huì)不會(huì)有類(lèi)似冷熱數(shù)據(jù)的問(wèn)題?應(yīng)該如何優(yōu)化和解決呢?


答案是:那必然是存在一些問(wèn)題的。


常見(jiàn)的一個(gè)場(chǎng)景就是電商系統(tǒng)里的商品緩存數(shù)據(jù),假設(shè)你有1億個(gè)商品,然后只要查詢(xún)商品的時(shí)候發(fā)現(xiàn)商品不在緩存里,就給他放到緩存里去,你要這么搞的話(huà),必然導(dǎo)致大量的不怎么經(jīng)常訪(fǎng)問(wèn)的商品會(huì)被放在Redis緩存里!


經(jīng)常被訪(fǎng)問(wèn)的商品其實(shí)就是熱數(shù)據(jù),不經(jīng)常被訪(fǎng)問(wèn)的商品其實(shí)就是冷數(shù)據(jù),我們應(yīng)該盡量讓Redis里放的都是經(jīng)常訪(fǎng)問(wèn)的熱數(shù)據(jù),而不是大量的冷數(shù)據(jù)。因?yàn)槟惴乓淮蠖巡辉趺唇?jīng)常訪(fǎng)問(wèn)的商品在Redis里,那么他占用了很多內(nèi)存,而且后續(xù)還不怎么會(huì)訪(fǎng)問(wèn)到他們!


所以我們?cè)谠O(shè)計(jì)緩存機(jī)制的時(shí)候,經(jīng)常會(huì)考慮熱數(shù)據(jù)的緩存預(yù)加載


也就是說(shuō),每天統(tǒng)計(jì)出來(lái)哪些商品被訪(fǎng)問(wèn)的次數(shù)最多,然后晚上的時(shí)候,系統(tǒng)啟動(dòng)一個(gè)定時(shí)作業(yè),把這些熱門(mén)商品的數(shù)據(jù),預(yù)加載到Redis里。那么第二天是不是對(duì)熱門(mén)商品的訪(fǎng)問(wèn)就自然會(huì)優(yōu)先走Redis緩存了?


3、LRU鏈表的熱數(shù)據(jù)區(qū)域是如何進(jìn)行優(yōu)化的?


接著我們來(lái)看看LRU鏈表的熱數(shù)據(jù)區(qū)域的一個(gè)性能優(yōu)化的點(diǎn),就是說(shuō),在熱數(shù)據(jù)區(qū)域中,如果你訪(fǎng)問(wèn)了一個(gè)緩存頁(yè),是不是應(yīng)該要把他立馬移動(dòng)到熱數(shù)據(jù)區(qū)域的鏈表頭部去?


我們看下面的圖示。

? ? ? ? ? ?

? ? ? ? ? ? ?

但是你要知道,熱數(shù)據(jù)區(qū)域里的緩存頁(yè)可能是經(jīng)常被訪(fǎng)問(wèn)的,所以這么頻繁的進(jìn)行移動(dòng)是不是性能也并不是太好?也沒(méi)這個(gè)必要。


所以說(shuō),LRU鏈表的熱數(shù)據(jù)區(qū)域的訪(fǎng)問(wèn)規(guī)則被優(yōu)化了一下,即你只有在熱數(shù)據(jù)區(qū)域的后3/4部分的緩存頁(yè)被訪(fǎng)問(wèn)了,才會(huì)給你移動(dòng)到鏈表頭部去。


如果你是熱數(shù)據(jù)區(qū)域的前面1/4的緩存頁(yè)被訪(fǎng)問(wèn),他是不會(huì)移動(dòng)到鏈表頭部去的。


舉個(gè)例子,假設(shè)熱數(shù)據(jù)區(qū)域的鏈表里有100個(gè)緩存頁(yè),那么排在前面的25個(gè)緩存頁(yè),他即使被訪(fǎng)問(wèn)了,也不會(huì)移動(dòng)到鏈表頭部去的。但是對(duì)于排在后面的75個(gè)緩存頁(yè),他只要被訪(fǎng)問(wèn),就會(huì)移動(dòng)到鏈表頭部去。


這樣的話(huà),他就可以盡可能的減少鏈表中的節(jié)點(diǎn)移動(dòng)了。


4、一個(gè)腦筋急轉(zhuǎn)彎的思考題


今天給大家出一個(gè)腦筋急轉(zhuǎn)彎的小思考題,大家看了以后都可以在評(píng)論區(qū)里回答一下,如果回答錯(cuò)誤的同學(xué),那真的得接受一點(diǎn)懲罰了!


這個(gè)問(wèn)題就是:如果一個(gè)緩存頁(yè)在冷數(shù)據(jù)區(qū)域的尾巴上,已經(jīng)超過(guò)1s了,此時(shí)這個(gè)緩存頁(yè)被訪(fǎng)問(wèn)了一下,那么他此時(shí)會(huì)移動(dòng)到冷數(shù)據(jù)區(qū)域的鏈表頭部嗎?注意,是冷數(shù)據(jù)區(qū)域的鏈表頭部!

End

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

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

19 MySQL是如何將LRU鏈表的使用性能優(yōu)化到極致的?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
化德县| 景泰县| 桐梓县| 东乌| 安仁县| 乌拉特后旗| 自贡市| 五大连池市| 出国| 三亚市| 柳州市| 甘德县| 襄垣县| 乐都县| 体育| 凌海市| 萝北县| 富源县| 中方县| 湖北省| 云阳县| 科尔| 青冈县| 如东县| 阿瓦提县| 夏邑县| 麻江县| 囊谦县| 买车| 桂林市| 娱乐| 英超| 松桃| 界首市| 措美县| 恩平市| 栖霞市| 临沧市| 东明县| 甘德县| 新宁县|