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

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

29 理解數(shù)據(jù)在磁盤上的物理存儲(chǔ)之后,聊聊行溢出是什么東西?

2023-06-21 21:31 作者:儒猿課堂  | 我要投稿

理解數(shù)據(jù)在磁盤上的物理存儲(chǔ)之后,聊聊行溢出是什么東西?


上一篇文章我們已經(jīng)理解清楚了一行數(shù)據(jù)在磁盤上的物理存儲(chǔ)結(jié)構(gòu)了,其實(shí)理解了這個(gè),你也就理解了每一行數(shù)據(jù)在磁盤上是如何存儲(chǔ)的,以及他被加載到緩存里來的時(shí)候,一行數(shù)據(jù)都包含哪些東西了。


今天我們來聊聊行數(shù)據(jù)的物理存儲(chǔ)的一個(gè)高階的話題,就是行溢出到底是個(gè)什么東西?


我們之前已經(jīng)初步了解到,實(shí)際上我們每一行數(shù)據(jù)都是放在一個(gè)數(shù)據(jù)頁(yè)里的,這個(gè)數(shù)據(jù)頁(yè)默認(rèn)的大小是16KB,那么之前就有人在后臺(tái)提過一個(gè)問題:萬(wàn)一 一行數(shù)據(jù)的大小超過了頁(yè)的大小怎么辦呢?


比如有一個(gè)表的字段類型是VARCHAR(65532),意思就是最大可以包含65532個(gè)字符,那也就是65532個(gè)字節(jié),這就遠(yuǎn)大于16kb的大小了,也就是說這一行數(shù)據(jù)的這個(gè)字段都遠(yuǎn)超一個(gè)數(shù)據(jù)頁(yè)的大小了!


這個(gè)時(shí)候?qū)嶋H上會(huì)在那一頁(yè)里存儲(chǔ)你這行數(shù)據(jù),然后在那個(gè)字段中,僅僅包含他一部分?jǐn)?shù)據(jù),同時(shí)包含一個(gè)20個(gè)字節(jié)的指針,指向了其他的一些數(shù)據(jù)頁(yè),那些數(shù)據(jù)頁(yè)用鏈表串聯(lián)起來,存放這個(gè)VARCHAR(65532)超大字段里的數(shù)據(jù)。


我們看下圖,就給出了這個(gè)示意。

? ? ? ? ? ? ?

上面說的這個(gè)過程,其實(shí)就叫做行溢出,就是說一行數(shù)據(jù)存儲(chǔ)的內(nèi)容太多了,一個(gè)數(shù)據(jù)頁(yè)都放不下了,此時(shí)只能溢出這個(gè)數(shù)據(jù)頁(yè),把數(shù)據(jù)溢出存放到其他數(shù)據(jù)頁(yè)里去,那些數(shù)據(jù)頁(yè)就叫做溢出頁(yè)。


包括其他的一些字段類型都是一樣的,比如TEXT、BLOB這種類型的字段,都有可能出現(xiàn)溢出,然后一行數(shù)據(jù)就會(huì)存儲(chǔ)在多個(gè)數(shù)據(jù)頁(yè)里。


講到這里,其實(shí)就已經(jīng)把我們的行數(shù)據(jù)的物理存儲(chǔ)相關(guān)的內(nèi)容都已經(jīng)講完了,很多瑣碎和細(xì)節(jié)的東西,其實(shí)不需要我們?cè)谶@里來死扣他,大家其實(shí)要理解的,就是一行數(shù)據(jù)的物理存儲(chǔ)結(jié)構(gòu),然后這個(gè)數(shù)據(jù)其實(shí)是在一個(gè)數(shù)據(jù)頁(yè)里的,如果一個(gè)數(shù)據(jù)頁(yè)里放不下一行數(shù)據(jù),就會(huì)有行溢出問題,存放到多個(gè)數(shù)據(jù)頁(yè)里去。


講到這里,我們可以做一點(diǎn)總結(jié),當(dāng)我們?cè)跀?shù)據(jù)庫(kù)里插入一行數(shù)據(jù)的時(shí)候,實(shí)際上是在內(nèi)存里插入一個(gè)有復(fù)雜存儲(chǔ)結(jié)構(gòu)的一行數(shù)據(jù),然后隨著一些條件的發(fā)生,這行數(shù)據(jù)會(huì)被刷到磁盤文件里去。


在磁盤文件里存儲(chǔ)的時(shí)候,這行數(shù)據(jù)也是按照復(fù)雜的存儲(chǔ)結(jié)構(gòu)去存放的。


而且每一行數(shù)據(jù)都是放在數(shù)據(jù)頁(yè)里的,如果一行數(shù)據(jù)太大了,就會(huì)產(chǎn)生行溢出問題,導(dǎo)致一行數(shù)據(jù)溢出到多個(gè)數(shù)據(jù)頁(yè)里去,那么這行數(shù)據(jù)在Buffer Pool可能就是存在于多個(gè)緩存頁(yè)里的,刷入到磁盤的時(shí)候,也是用磁盤上的多個(gè)數(shù)據(jù)頁(yè)來存放這行數(shù)據(jù)的。


希望大家能夠把最近幾天學(xué)到的行數(shù)據(jù)物理存儲(chǔ)結(jié)構(gòu),與之前學(xué)到的Buffer Pool緩存機(jī)制結(jié)合起來去理解,把他們有機(jī)的融合為一體。


接下來,我們就會(huì)開始講解數(shù)據(jù)頁(yè)的物理存儲(chǔ)結(jié)構(gòu),然后是表空間的物理存儲(chǔ)結(jié)構(gòu),最后是講解這些數(shù)據(jù)以物理存儲(chǔ)結(jié)構(gòu)的方式,在磁盤上存儲(chǔ)的時(shí)候,是放在哪些磁盤文件里的。


只要把后續(xù)那些內(nèi)容講完,那么大家就對(duì)數(shù)據(jù)庫(kù)的Buffer Pool緩沖讀寫機(jī)制,以及磁盤上的物理存儲(chǔ)機(jī)制,就完全理解了,而且這兩個(gè)機(jī)制都是有機(jī)結(jié)合在一起的,Buffer Pool的數(shù)據(jù)是從磁盤上讀取出來的,Buffer Pool里更新的數(shù)據(jù)又會(huì)刷新到磁盤上去。


在這個(gè)過程中,整個(gè)數(shù)據(jù)的物理存儲(chǔ)機(jī)制,包括行數(shù)據(jù)、數(shù)據(jù)頁(yè)、表空間、磁盤文件,這些概念,大家也都會(huì)理解了,到時(shí)候自然理解了數(shù)據(jù)在磁盤上如何存儲(chǔ)的,加載到Buffer Pool緩存頁(yè)之后如何存儲(chǔ)的。

End


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

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

29 理解數(shù)據(jù)在磁盤上的物理存儲(chǔ)之后,聊聊行溢出是什么東西?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
徐州市| 丹东市| 科技| 汶上县| 余江县| 镇赉县| 安庆市| 兰溪市| 彩票| 宜良县| 穆棱市| 渑池县| 长阳| 抚宁县| 雅江县| 武城县| 阿城市| 通榆县| 扎囊县| 武宁县| 博罗县| 思茅市| 毕节市| 龙泉市| 衡水市| 德令哈市| 碌曲县| 贵港市| 桦南县| 马山县| 浦东新区| 尼木县| 武夷山市| 广宁县| 县级市| 社会| 余庆县| 姜堰市| 广丰县| 利辛县| 惠东县|