磁盤怎么存儲NULL值

      網友投稿 806 2022-05-28

      磁盤上怎么存儲NULL值?

      磁盤上怎么存儲NULL值?

      1 為何不能直接存個NULL?

      NULL值列表,一行數據里可能有的字段值是NULL,比如nickname字段,允許為NULL,存儲時,如果沒賦值,這字段值就是NULL。

      假設這個字段的NULL值在磁盤存儲時,就是按“NULL”字符串存儲的,是不是很浪費存儲空間而且還奇怪?

      2 到底怎么存儲?

      不通過字符串,而是通過二進制bit位存儲,一行數據里假設有多個字段的值都是NULL,那么這多個字段的NULL,就會以bit位形式存放在NULL值列表。

      如下表:

      CREATE TABLE customer ( name VARCHAR(10) NOT NULL, address VARCHAR(20), gender CHAR(1), job VARCHAR(30), school VARCHAR(50) ) ROW_FORMAT=COMPACT;

      有4個變長字段,還有個定長字段,name聲明NOT NULL,其他4個字段都可能NULL

      如下一行數據怎么存儲在磁盤呢:

      jack NULL m NULL xx_school

      有倆字段都是NULL

      3 一行數據的磁盤存儲格式

      思考上面那個表里的那行案例數據,在磁盤上如何存儲呢,因為他有多個變長字段,還有多個字段允許為NULL。首先我們先回顧一下,一行數據在磁盤上的存儲格式應該是下面這樣的:

      變長字段長度列表 NULL值列表 頭信息 column1=value1 column2=value2 ... columnN=valueN

      4個變長字段,逆序先放school字段的長度,再放job、address、name幾個字段的值長度?

      但要區分一個問題,若這變長字段值為NULL,就不用在變長字段長度列表里存放他的值長度,所以在上面那行數據,只有name和school兩個變長字段有值,把他們的長度按照逆序放在變長字段長度列表即可:

      0x09 0x04 NULL值列表 頭信息 column1=value1 column2=value2 ... columnN=valueN

      所有允許值為NULL的字段,不是說值就得是NULL,只要是允許為NULL的字段,每個字段都有個二進制bit位值:

      bit值是1說明是NULL

      bit值是0說明不是NULL

      比如上面4個字段都允許為NULL,每個人都會有一個bit位,這一行數據的值是

      jack NULL m NULL xx_school

      其中2個字段是null,2個字段不是null,所以4個bit位應該是:1010

      但實際放在NULL值列表時,按逆序放,所以NULL值列表里放的:0101,整體這一行數據如下:

      0x09 0x04 0101 頭信息 column1=value1 column2=value2 ... columnN=valueN

      實際NULL值列表存放時,一般起碼8個bit位的倍數,不足8個bit位就高位補0,所以實際存放如下:

      0x09 0x04 00000101 頭信息 column1=value1 column2=value2 ... columnN=valueN

      4 如何讀磁盤的一行數據?

      磁盤數據存儲格式:

      0x09 0x04 00000101 頭信息 column1=value1 column2=value2 ... columnN=valueN

      先讀:

      變長字段長度列表

      就知道有幾個變長字段

      NULL值列表

      哪些變長字段是NULL

      從變長字段長度列表中解析出不為NULL的變長字段的值長度,然后也知道哪些字段是NULL。根據這些信息,就能從實際的列值存儲區域里,把你每個字段的值讀取出來了。

      變長字段值,就按值長度讀取,若為NULL,就知道他是個NULL,沒有值存儲

      定長字段,按定長長度讀取

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:U盤圖標DIY方法
      下一篇:【安心存U盤開箱評測】 一枚有棱角U盤的辦公化體驗
      相關文章
      亚洲熟女www一区二区三区| 亚洲精品乱码久久久久久按摩 | 亚洲日本中文字幕天堂网| 亚洲偷偷自拍高清| 亚洲国产美女精品久久| 欧洲亚洲国产清在高| 国产亚洲综合久久系列| 亚洲中文字幕无码爆乳AV| 亚洲午夜福利717| 亚洲人成影院在线无码按摩店| 中文字幕人成人乱码亚洲电影 | 亚洲精品国产精品乱码不卡√| 亚洲中文字幕在线观看| 亚洲精品一品区二品区三品区| 中文字幕无码精品亚洲资源网| 亚洲中文字幕无码爆乳av中文| 中文字幕亚洲第一| 亚洲精品乱码久久久久久中文字幕 | 亚洲一区二区三区高清在线观看| 亚洲国产日韩综合久久精品| 亚洲精品第一综合99久久| 亚洲熟女www一区二区三区| 色偷偷尼玛图亚洲综合| 亚洲av高清在线观看一区二区| 亚洲精品无码99在线观看| 久久久久亚洲精品中文字幕| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲国产成人片在线观看 | 亚洲免费网站观看视频| 狠狠综合亚洲综合亚洲色| 亚洲成片观看四虎永久| 一本久久a久久精品亚洲| 亚洲AV中文无码乱人伦下载| 亚洲美女人黄网成人女| 亚洲男人天堂2018av| 亚洲av日韩av永久在线观看| 亚洲精品国产福利一二区| 日本亚洲欧洲免费天堂午夜看片女人员 | 亚洲日本香蕉视频观看视频| 亚洲AV无码无限在线观看不卡| 亚洲爆乳大丰满无码专区 |