国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一條 INSERT 語句背后的秘密

數據庫 其他數據庫
數據庫的 “高性能密碼” 藏在底層結構里。從 INSERT 語句到磁盤存儲,COMPACT 行格式的字段管理、行溢出的優化邏輯,都是提升數據庫能力的關鍵。懂記錄結構,才能在面試中從容應答,在優化時直擊痛點。

你以為你寫了一條 SQL,其實你是在和數據庫的一整套存儲機制打交道。

一、引言:懂記錄結構,真的很重要!

?? 開篇三連擊:

  • 當你敲下INSERT時,數據是在磁盤「蓋房子」還是「搭積木」?
  • 行格式里藏著哪些「加密代碼」?
  • 一條“莫名其妙”的慢查詢,根源可能是行格式選錯?

這些問題的答案,就藏在 InnoDB 的記錄結構里。

我們在寫 SQL 的時候,經常只關注“寫對了沒”、“跑起來沒報錯”。但真正理解 MySQL 的底層行為,往往要從一句簡單的 INSERT 開始。

二、從一條INSERT語句開始說起

當我們執行INSERT INTO users (name, age,address) VALUES ('張三', 25,'北京.海淀');這條語句時,數據并不會直接 “一股腦” 地塞進磁盤。InnoDB 會按照特定的規則,將數據 “搭建” 成特定的結構,然后再存儲到磁盤上。

為了更好地理解這個過程,我們先來對比一下行數據以及行結構。

假設我們有一張users表,包含id、name、age、address四個字段。

CREATE TABLEusers (
    idINTUNSIGNEDNOTNULL AUTO_INCREMENT COMMENT'主鍵ID',
    nameVARCHAR(100) NOTNULLCOMMENT'用戶姓名',
    age INTUNSIGNEDCOMMENT'年齡',
    address VARCHAR(255) COMMENT'地址',
    PRIMARY KEY (id)
) ENGINE=InnoDBDEFAULTCHARSET=utf8mb4 COMMENT='用戶信息表';

當我們插入一條數據(1, '張三', 25,'北京.海淀')時,從表面上看,我們看到的行數據是這樣的:

id

name

age

address

1

張三

25

北京海淀

然而在 InnoDB 中,一條數據并非簡單存儲,而是拆分成多個部分:記錄頭信息保存元數據,變長字段列表記錄變長字段及長度,NULL 值列表標記哪些字段為 NULL。

InnoDB目前支持四種行格式:

  • COMPACT(最常用)
  • REDUNDANT(MySQL 5.0之前)
  • DYNAMIC(MySQL 5.7默認)
  • COMPRESSED(壓縮格式)

COMPACT 行格式是最常用的“標準模板”,掌握它能幫助你理解 InnoDB 記錄結構的核心。

三、COMPACT 行格式詳細介紹:數據存儲的 “標準模板”

廢話不多說,直接看圖:

在這里插入圖片描述在這里插入圖片描述

3.1 記錄頭信息:數據的 “身份證”

記錄頭信息僅占5字節,卻包含記錄類型、刪除標記、B+樹位置等關鍵信息,是記錄的重要標識。

在這里插入圖片描述在這里插入圖片描述

當我們執行DELETE語句刪除一條記錄時,InnoDB 并不會立即從磁盤上刪除這條記錄,而是在記錄頭信息中設置刪除標記,后續再通過專門的機制進行清理。

字段 (Field)

位數 (Bits)

描述 (Description)

預留位1

1

保留位,目前沒有用到。

預留位2

1

保留位,目前沒有用到。

delete_mask

1

標記該記錄是否被刪除,1-是,0-否

min_rec_mask

1

標記該記錄是否是B+樹葉子節點中最小的記錄,1-是,0-否

record_type

3

標記記錄的類型。000表示普通記錄,001表示最小值記錄,010表示目錄記錄,011表示最大值記錄。

n_owned

4

表示當前記錄擁有的記錄數

heap_no

13

標記當前記錄在當前頁面(Page)中的相對位置(槽號)。

next_record

16

表示下一條記錄的相對位置

預留位2

1

保留位,目前沒有用到。

3.2 變長字段列表:應對 “變化多端” 的數據

在實際應用中,很多字段的數據長度是不固定的,比如VARCHAR、TEXT、BLOB等類型的字段。變長字段列表就是為了應對這些 “變化多端” 的數據而設計的。它會記錄哪些字段是變長的,以及它們的長度。

變長字段列表采用倒排的方式存儲,也就是說,它從右往左存儲每個變長字段的長度。

3.2.1 變長字段列表如何存儲實際數據?

當執行插入語句INSERT INTO users VALUES(1, '張三', 25, '北京.海淀');時,我們來分析一下變長字段列表的存儲方式。

a)、字段分析

  • id:INT 類型,固定長度 4 字節,不屬于變長字段
  • name:VARCHAR (100),實際存儲 ' 張三 ',UTF-8 編碼下每個漢字占 3 字節,共 6 字節
  • age:INT 類型,固定長度 4 字節,不屬于變長字段
  • address:VARCHAR (255),實際存儲 ' 北京.海淀 ',共包含 5 個字符(2 個漢字、1 個點、2 個漢字),每個漢字 3 字節,點 1 字節,共 13 字節

b)、變長字段列表的倒排存儲

上面的例子中,有兩個變長字段:name和address。它們的長度分別是 6 字節和 13 字節。根據倒排存儲規則,變長字段列表會按照從右到左的順序記錄這些長度。

  • 表定義順序是:name, address
  • 倒排后,存的時候順序是:address, name

因此,變長字段列表的內容為:[13,6]。

在這里插入圖片描述在這里插入圖片描述

這些值并不是直接以十進制存入,而是編碼成 1~2 字節的二進制形式(依字段長度大小決定)。

3.3 NULL 值列表:節省空間的 “小能手”

在 InnoDB 中,NULL 值列表是一種節省空間的巧妙設計。它不存儲 NULL 的實際值,而是用每個字段對應的一位二進制位來標記:

  • 1 表示該字段為 NULL;
  • 0 表示不為 NULL。

在計算 InnoDB 記錄結構中的 NULL 值列表時,只有那些“允許為 NULL”的字段才會被納入統計。

以 users 表為例:

  • id 是主鍵,不能為 NULL;
  • name 被 NOT NULL 明確聲明,也不能為 NULL;
  • age 和 address 沒有限定 NOT NULL,默認是可以為 NULL 的。

所以,NULL 值列表中只包含 age 和 address 這兩個字段的狀態位。

在這里插入圖片描述在這里插入圖片描述

NULL 值列表的位順序,是按照表結構中允許 NULL 字段的出現順序排列的,且僅包含這些字段。

四、行溢出:當數據太大時會發生什么?

a)、為什么會出現行溢出?

InnoDB 的數據存儲以 “頁” 為基本單位,每頁默認大小為 16KB。當我們插入的數據(如一篇幾萬字的文章、高清圖片的二進制數據)長度超過一頁能容納的空間時,InnoDB 就會遇到 “空間不夠用” 的難題。就像你想把 100 本書塞進只能裝 50 本書的箱子,自然裝不下。

b)、什么是行溢出?

為了解決上述問題,InnoDB 引入了行溢出機制:

  • 當數據過長時,它會把超出數據頁容量的部分 “搬” 到額外的溢出頁中存儲;
  • 并在原數據頁保留一個指向溢出頁的指針(通常是20字節)。

這就好比把裝不下的書先放在旁邊的臨時箱子,再在原本的箱子貼上標簽注明 “其余書在隔壁箱”。

在這里插入圖片描述在這里插入圖片描述

行溢出雖解決大字段存儲,但帶來性能隱患,如查詢慢、空間管理復雜、碎片增多。優化可從多方面入手:拆大字段表、選適配數據類型與行格式,控制字段長度,同時避免在大字段建索引,以此提升數據庫性能。

五、結語:深入底層,才能掌控全局

數據庫的 “高性能密碼” 藏在底層結構里。從 INSERT 語句到磁盤存儲,COMPACT 行格式的字段管理、行溢出的優化邏輯,都是提升數據庫能力的關鍵。懂記錄結構,才能在面試中從容應答,在優化時直擊痛點。

責任編輯:武曉燕 來源: 蘇三說技術
相關推薦

2025-06-16 07:45:00

2025-05-12 08:27:25

2023-10-16 18:39:22

2021-08-30 05:47:12

MySQL SQL 語句數據庫

2022-02-11 14:43:53

SQL語句C/S架構

2024-12-17 06:20:00

MySQLSQL語句數據庫

2022-05-31 13:58:09

MySQL查詢語句

2020-04-15 13:55:28

Kubernetes容器

2024-01-03 17:42:32

SQL數據庫

2022-12-29 08:00:00

Transforme架構深度學習

2021-06-07 08:37:03

SQL 查詢語句

2021-09-15 06:21:36

Update語句數據庫

2023-11-01 16:50:58

2021-09-28 13:32:24

innoDB架構MySQL

2010-05-24 18:22:56

SNMP協議

2010-11-25 10:05:51

云計算GFS

2012-05-21 21:53:05

2010-11-25 09:54:14

云計算MapReduce

2010-12-06 14:28:56

云計算Chubby

2010-11-29 10:28:32

云計算BigTable
點贊
收藏

51CTO技術棧公眾號

欧美一级一片| 国产精品手机播放| 天天想你在线观看完整版电影免费| av在线精品| 欧美老人xxxx18| 欧美韩国日本在线| 一区二区国产精品| 国产国产精品人在线视| 日韩网站中文字幕| 91精品久久久久久久91蜜桃| jlzzjlzz欧美| 久久亚洲影视婷婷| 亚洲精品一卡二卡三卡四卡| 久久久久久美女精品| 久久久噜噜噜久久久| 欧美成人a交片免费看| 欧美日韩综合色| 亚洲精品第一国产综合野草社区| 成人白浆超碰人人人人| 日韩国产高清一区| 欧美一区二区三区久久精品| 国产91精品久久久| 国产一区二区| 国产一区二区成人| 川上优av中文字幕一区二区| 在线观看成人免费视频| 在线激情视频| 欧美激情一区二区在线| 免费无码毛片一区二三区| 青青草一区二区三区| 国产精品一区二区三区精品| 大色综合视频网站在线播放| 国内揄拍国内精品| 青草伊人久久| 九九精品在线播放| 久久久久久久性潮| 日韩在线观看免费全集电视剧网站 | 538国产精品一区二区免费视频| 欧美暴力调教| 亚洲天堂av综合网| 日本免费一区二区三区四区| 欧美精品一区二区不卡| 影音先锋男人资源在线| 在线不卡a资源高清| jizz在线免费观看| 91精品久久久久久久91蜜桃| 免费a级在线播放| 日韩精品自拍偷拍| 性欧美freesex顶级少妇| 亚洲精品国产成人| 成人做爰免费视频免费看| 中文字幕亚洲欧美一区二区三区 | 日韩av中文字幕在线播放| 尤物视频在线看| 亚洲国产中文字幕久久网| 国产精品论坛| 久久久国产精品免费| 国产欧美三级电影| 日韩av电影免费观看高清| 99久久婷婷国产综合精品电影√| 97人人模人人爽人人喊38tv| 国产精品免费看| 在线成人av电影| 久久老女人爱爱| 国产aa视频| 欧美日韩国产一区二区三区地区| 国产盗摄——sm在线视频| 久久艳片www.17c.com| 蜜臀91精品国产高清在线观看| 444亚洲人体| 精品一区二区在线免费观看| 北条麻妃在线观看| 亚洲综合精品自拍| 色噜噜狠狠狠综合欧洲色8| 自拍偷拍亚洲精品| 欧美日韩伦理在线免费| 亚洲国产婷婷香蕉久久久久久99| 久久亚洲精品小早川怜子| 亚洲欧洲闷骚av少妇影院 | 狠狠做六月爱婷婷综合aⅴ| 91精品啪aⅴ在线观看国产| 久久久久免费| 色婷婷成人在线| 欧美精品日韩一区| 国产一区二区三区精品在线观看| 国产精品中文字幕在线| 免费av成人在线| free性亚洲| 777精品伊人久久久久大香线蕉| 成人精品动漫| 亚洲a在线播放| 国产成人一级电影| 精东传媒在线观看| 亚洲精品美女久久久| 亚洲三级性片| 在线视频福利一区| 亚洲国产一区二区在线播放| 牛牛精品一区二区| 91九色国产视频| 成人h动漫精品一区二| 免费在线看v| 欧美激情视频一区二区| 性欧美精品高清| av成人网在线| 国产一区二区日韩| 影音国产精品| 免费全黄无遮挡裸体毛片| 日韩不卡在线观看| 亚洲综合自拍| 超碰在线97免费| 日韩电视剧在线观看免费网站| 日韩电影在线视频| 国产在线青青草| 亚洲国产精品va| 欧美日本不卡高清| 狠狠色一日本高清视频| 亚洲一区二区黄| 一区二区日韩免费看| 日韩黄色动漫| 久久在精品线影院精品国产| 日韩精品免费视频人成| 视频在线91| 理论片在线不卡免费观看| 日韩精品一二三区| av网站在线免费播放| 性欧美办公室18xxxxhd| 国产91在线看| 免费污视频在线观看| 不卡一卡2卡3卡4卡精品在| 中文字幕一区二区在线观看| 欧美高清你懂的| 在线免费观看成人| 日韩精品在线网站| 国精品一区二区| 神马亚洲视频| 国产在线观看一区二区三区| 国产精品久久久久久久久图文区| 另类一区二区三区| 欧洲美女和动交zoz0z| 欧美一级欧美三级在线观看 | 亚洲国产欧美精品| 午夜精品免费| 一色桃子在线| 国产日韩精品电影| 一区二区三区蜜桃| 久久99蜜桃| 午夜影院免费| 国产精品精品久久久久久| 亚洲美女偷拍久久| 色棕色天天综合网| 性网站在线免费观看| 97视频免费观看| 亚洲同性同志一二三专区| 丁香一区二区| 电影天堂久久| 国产精品扒开腿做爽爽爽的视频| 亚洲欧美经典视频| 日韩国产欧美| 黄色美女网站在线观看| 成人免费视频观看视频| 精品久久久久久久久久久久| 国产午夜一区| 日韩在线无毛| 精品卡一卡二| 亚洲高清在线观看| 国产精品一色哟哟哟| 婷婷六月国产精品久久不卡| 成年人网站国产| 久久91亚洲人成电影网站| 国产精品久久久久一区| 国产尤物久久久| 日本午夜在线| 日韩wuma| 最近日韩中文字幕中文| 国产色一区二区| 精品日韩毛片| 日本欧美在线视频免费观看| 精品免费一区二区三区蜜桃| 亚洲成人激情图| 波多野结衣亚洲一区| 啪啪激情综合网| 蜜桃视频在线播放| 一区二区三区四区欧美日韩| 伊人久久大香线蕉av一区二区| 久久久精品中文字幕麻豆发布| 九色成人国产蝌蚪91| 91最新在线| 999一区二区三区| 91sao在线观看国产| 色先锋aa成人| 国模少妇一区二区三区| 久久伊人精品| 永久免费在线观看| 色播亚洲视频在线观看| 日韩一区二区三区xxxx| 亚洲综合色婷婷| 麻豆精品国产91久久久久久| 视频一区国产| 欧美日韩在线看片| 中文字幕无码不卡免费视频|