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

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

11 從數(shù)據(jù)的增刪改開始講起,回顧一下Buffer Pool在數(shù)據(jù)庫里的地位

2023-06-14 12:35 作者:儒猿課堂  | 我要投稿

從數(shù)據(jù)的增刪改開始講起,回顧一下Buffer Pool在數(shù)據(jù)庫里的地位



1、一切從數(shù)據(jù)的增刪改開始講起


好了,到這一講為止,我們實(shí)際上已經(jīng)初步的講解了一下MySQL的整體架構(gòu)設(shè)計(jì)原理,大家對(duì)于MySQL內(nèi)部包含哪些組件,我們平時(shí)更新數(shù)據(jù)以及查詢數(shù)據(jù)的時(shí)候,大致都是怎么做的,都已經(jīng)有一個(gè)比較高層次的了解了。


另外現(xiàn)在我們初步的了解了MySQL的架構(gòu)原理之后,還給大家介紹了一些我們的數(shù)據(jù)庫相關(guān)的生產(chǎn)經(jīng)驗(yàn),就是對(duì)于任何一個(gè)項(xiàng)目,數(shù)據(jù)庫都需要選擇好合適的機(jī)器,同時(shí)做好壓測(cè),并且有一個(gè)完善的可視化監(jiān)控系統(tǒng)。


現(xiàn)在可以理解為每個(gè)人手頭都有了一個(gè)可用的數(shù)據(jù)庫,而且對(duì)數(shù)據(jù)庫的整體架構(gòu)原理都有了一定的理解了。那么接下來,我們這個(gè)專欄一共有100多講的內(nèi)容,我們接著當(dāng)然要細(xì)細(xì)的講解數(shù)據(jù)庫的方方面面了


那我們應(yīng)該從哪個(gè)環(huán)節(jié)開始入手呢?


當(dāng)然是從數(shù)據(jù)庫的增刪改開始了,因?yàn)楫?dāng)你手頭有了一個(gè)數(shù)據(jù)庫之后,你必然就會(huì)去開發(fā)一個(gè)系統(tǒng),系統(tǒng)就直接基于數(shù)據(jù)庫做各種增刪改查的操作,實(shí)現(xiàn)各種各樣的業(yè)務(wù)邏輯


而任何一個(gè)系統(tǒng)在使用數(shù)據(jù)庫的時(shí)候,一定是從插入數(shù)據(jù)開始的,也就是首先先會(huì)對(duì)數(shù)據(jù)進(jìn)行增刪改的操作。


當(dāng)你的數(shù)據(jù)庫中有了數(shù)據(jù)之后,接著才會(huì)執(zhí)行各種各樣的查詢操作。


所以我們專欄的講解順序,就按照你手頭有了一個(gè)經(jīng)過壓測(cè)的、有完善監(jiān)控的數(shù)據(jù)庫之后,你開發(fā)的系統(tǒng)使用數(shù)據(jù)庫的順序來講解,先講解系統(tǒng)對(duì)數(shù)據(jù)庫執(zhí)行各種增刪改操作時(shí)背后對(duì)應(yīng)的內(nèi)幕原理,以及事務(wù)的原理,包括鎖的底層機(jī)制,然后講解你有了數(shù)據(jù)之后,執(zhí)行各種復(fù)雜的查詢操作的時(shí)候,涉及到的索引底層原理,查詢優(yōu)化的底層原理。


當(dāng)然這個(gè)中間我們會(huì)穿插各種各樣的生產(chǎn)實(shí)踐的案例,就跟我之前講解的《從0開始帶你成為JVM實(shí)戰(zhàn)高手》專欄一樣。


然后講解完這些之后,我們?cè)賮碇v解平時(shí)我們?cè)陂_發(fā)系統(tǒng)的時(shí)候,如何進(jìn)行數(shù)據(jù)庫的建模,在數(shù)據(jù)庫建模的時(shí)候,應(yīng)該如何注意字段類型、索引類型的一些問題,如何保證數(shù)據(jù)庫避免死鎖、高性能的運(yùn)行。


接著我們?cè)僦v解一些高階的數(shù)據(jù)庫架構(gòu)設(shè)計(jì),比如說主從架構(gòu)設(shè)計(jì)以及分庫分表架構(gòu)設(shè)計(jì),包括一些生產(chǎn)實(shí)踐的案例。


所以上面的這些就是我們專欄接下來將要講解的順序,這里要給大家提前通知一下,我在實(shí)際講解的過程中,會(huì)增加很多內(nèi)容,比如接下來好幾講都是深度分析Buffer Pool的內(nèi)容,實(shí)際上在原來的大綱中都是沒有的。


另外我接下來講解的過程中,還可能隨時(shí)會(huì)對(duì)大綱中原有內(nèi)容的順序做出調(diào)整,比如說我在講解完Buffer Pool之后,接著可能直接會(huì)深入講解redo log、undo log、binlog這些機(jī)制,同時(shí)接著講解事務(wù)機(jī)制,鎖機(jī)制,底層數(shù)據(jù)存儲(chǔ)機(jī)制。


然后這些都講完之后,才是講解索引和查詢優(yōu)化的內(nèi)容,所以希望大家能明白我們隨時(shí)會(huì)對(duì)大綱內(nèi)容做出額外的擴(kuò)充,以及我們隨時(shí)會(huì)調(diào)整大綱內(nèi)容的順序。


好,那么從這篇文章開始,讓我們一起來探索數(shù)據(jù)庫的各種底層機(jī)制和生產(chǎn)實(shí)踐案例吧!


2、回顧一下Buffer Pool是個(gè)什么東西?


現(xiàn)在我們先來回顧一下數(shù)據(jù)庫中的Buffer Pool是個(gè)什么東西?其實(shí)他是一個(gè)非常關(guān)鍵的組件,因?yàn)槲覀兺ㄟ^之前的講解都知道一點(diǎn),那就是數(shù)據(jù)庫中的數(shù)據(jù)實(shí)際上最終都是要存放在磁盤文件上的,如下圖所示。

? ? ? ? ? ?

? ? ? ? ? ? ?

但是我們?cè)趯?duì)數(shù)據(jù)庫執(zhí)行增刪改操作的時(shí)候,不可能直接更新磁盤上的數(shù)據(jù)的,因?yàn)槿绻銓?duì)磁盤進(jìn)行隨機(jī)讀寫操作,那速度是相當(dāng)?shù)穆?,隨便一個(gè)大磁盤文件的隨機(jī)讀寫操作,可能都要幾百毫秒。如果要是那么搞的話,可能你的數(shù)據(jù)庫每秒也就只能處理幾百個(gè)請(qǐng)求了!


之前我們也都講解過了,你在對(duì)數(shù)據(jù)庫執(zhí)行增刪改操作的時(shí)候,實(shí)際上主要都是針對(duì)內(nèi)存里的Buffer Pool中的數(shù)據(jù)進(jìn)行的,也就是你實(shí)際上主要是對(duì)數(shù)據(jù)庫的內(nèi)存里的數(shù)據(jù)結(jié)構(gòu)進(jìn)行了增刪改,如下圖所示。

? ? ? ? ? ?

? ? ? ? ? ? ?

當(dāng)然,我們之前都說過,其實(shí)每個(gè)人都擔(dān)心一個(gè)事,就是你在數(shù)據(jù)庫的內(nèi)存里執(zhí)行了一堆增刪改的操作,內(nèi)存數(shù)據(jù)是更新了,但是這個(gè)時(shí)候如果數(shù)據(jù)庫突然崩潰了,那么內(nèi)存里更新好的數(shù)據(jù)不是都沒了嗎?


所以其實(shí)之前我們開頭就用了很多篇幅講這個(gè)問題,MySQL就怕這個(gè)問題,所以引入了一個(gè)redo log機(jī)制,你在對(duì)內(nèi)存里的數(shù)據(jù)進(jìn)行增刪改的時(shí)候,他同時(shí)會(huì)把增刪改對(duì)應(yīng)的日志寫入redo log中,如下圖。

? ? ? ? ? ?

? ? ? ? ? ? ?

萬一你的數(shù)據(jù)庫突然崩潰了,沒關(guān)系,只要從redo log日志文件里讀取出來你之前做過哪些增刪改操作,瞬間就可以重新把這些增刪改操作在你的內(nèi)存里執(zhí)行一遍,這就可以恢復(fù)出來你之前做過哪些增刪改操作了。


當(dāng)然對(duì)于數(shù)據(jù)更新的過程,他是有一套嚴(yán)密的步驟的,還涉及到undo log、binlog、提交事務(wù)、buffer pool臟數(shù)據(jù)刷回磁盤,等等。我們之前都講過了,這里不再重復(fù),僅僅是帶著大家重新回顧一下數(shù)據(jù)庫中的Buffer Pool這個(gè)東西。


3、Buffer Pool的一句話總結(jié)


所以這里我們簡(jiǎn)單對(duì)Buffer Pool這個(gè)東西做一下總結(jié),他其實(shí)是數(shù)據(jù)庫中我們第一個(gè)必須要搞清楚的核心組件,因?yàn)樵鰟h改操作首先就是針對(duì)這個(gè)內(nèi)存中的Buffer Pool里的數(shù)據(jù)執(zhí)行的,同時(shí)配合了后續(xù)的redo log、刷磁盤等機(jī)制和操作。


所以Buffer Pool就是數(shù)據(jù)庫的一個(gè)內(nèi)存組件,里面緩存了磁盤上的真實(shí)數(shù)據(jù),然后我們的Java系統(tǒng)對(duì)數(shù)據(jù)庫執(zhí)行的增刪改操作,其實(shí)主要就是對(duì)這個(gè)內(nèi)存數(shù)據(jù)結(jié)構(gòu)中的緩存數(shù)據(jù)執(zhí)行的。


這一篇文章我們先對(duì)Buffer Pool這個(gè)東西的定位做一個(gè)簡(jiǎn)單的回顧,下一篇文章我們來分析一下Buffer Pool這個(gè)內(nèi)存數(shù)據(jù)結(jié)構(gòu)里到底包含了一些什么東西。


End

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

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

11 從數(shù)據(jù)的增刪改開始講起,回顧一下Buffer Pool在數(shù)據(jù)庫里的地位的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
清远市| 麦盖提县| 柘荣县| 宁陕县| 高碑店市| 崇礼县| 德昌县| 民丰县| 肥乡县| 万盛区| 威远县| 朔州市| 德化县| 廉江市| 英山县| 华池县| 汝州市| 清涧县| 大足县| 洪泽县| 女性| 沅江市| 游戏| 随州市| 佳木斯市| 牡丹江市| 新晃| 朝阳县| 资源县| 安图县| 施秉县| 哈尔滨市| 博爱县| 寿阳县| 炎陵县| 西乌珠穆沁旗| 连云港市| 浦县| 同仁县| 香河县| 太湖县|