InnoDB 數(shù)據(jù)文件

1. InnoDB 文件存儲結構

一個 ibd 數(shù)據(jù)文件 -> Segment(段)-> Extent(區(qū))-> Page(頁)-> Row(行)

  • Tablesapce
    表空間:一個文件包含多個段表空間,用于存儲多個 ibd 數(shù)據(jù)文件,用于存儲表的記錄和索引呈础。一個文件包含多個段据途。
  • Segment
    段:用于管理多個Extent,分為數(shù)據(jù)段(Leaf node segment)抵屿、索引段(Non-leaf node segment)疹尾、回滾段(Rollback segment)昙篙。一個表至少會有兩個 segment秘豹,一個管理數(shù)據(jù)携御,一個管理索引。每多創(chuàng)建一個索引既绕,會多兩個 segment啄刹。
  • Extent
    區(qū):一個區(qū)固定包含64個連續(xù)的頁,大小為1M凄贩。當表空間不足鸵膏,需要分配新的頁資源,不會一頁一頁分怎炊,直接分配一個區(qū)。
  • Page
    頁:用于存儲多個 Row 行記錄廓译,大小為16K评肆。包含很多種頁類型,比如數(shù)據(jù)頁非区,undo頁瓜挽,系統(tǒng)頁,事務數(shù)據(jù)頁征绸,大的BLOB對象頁久橙。
  • Row
    行:包含了記錄的字段值,事務IDTrx id)管怠、滾動指針(Roll pointer)淆衷、字段指針(Field pointers)等信息

說明:Page 是文件最基本的單位,無論何種類型的 page渤弛,都是由page header祝拯,page trailerpage body 組成。如下圖所示

2. InnoDB 文件存儲格式

  • 通過 SHOW TABLE STATUS 命令
SHOW TABLE STATUS


一般情況下她肯,如果 row_formatREDUNDANT佳头、COMPACT,文件格式為 Antelope晴氨;如果 row_formatDYNAMICCOMPRESSED康嘉,文件格式為 Barracuda

  • 通過 information_schema 查看指定表的文件格式
select * from information_schema.innodb_sys_tables;

2.1 File文件格式(File-Format)

在早期的 InnoDB 版本中籽前,文件格式只有一種亭珍,隨著 InnoDB引擎的發(fā)展敷钾,出現(xiàn)了新文件格式,用于支持新的功能块蚌。目前 InnoDB只支持兩種文件格式:AntelopeBarracuda闰非。

  • Antelope: 先前未命名的,最原始的 InnoDB 文件格式峭范,它支持兩種行格式:COMPACTREDUNDANT财松,MySQL 5.6 及其以前版本默認格式為 Antelope
  • Barracuda: 新的文件格式纱控。它支持 InnoDB 的所有行格式辆毡,包括新的行格式:COMPRESSEDDYNAMIC

通過 innodb_file_format 配置參數(shù)可以設置 InnoDB 文件格式甜害,之前默認值為 Antelope舶掖,5.7 版本開始改為 Barracuda

2.2 Row行格式(Row_format)

表的行格式?jīng)Q定了它的行是如何物理存儲的尔店,這反過來又會影響查詢和DML 操作的性能眨攘。如果在單個 page 頁中容納更多行,查詢和索引查找可以更快地工作嚣州,緩沖池中所需的內(nèi)存更少鲫售,寫入更新時所需的 I/O 更少。

InnoDB 存儲引擎支持四種行格式:REDUNDANT该肴、COMPACT情竹、DYNAMICCOMPRESSED


DYNAMICCOMPRESSED 新格式引入的功能有:數(shù)據(jù)壓縮匀哄、增強型長列數(shù)據(jù)的頁外存儲和大索引前綴秦效。

每個表的數(shù)據(jù)分成若干頁來存儲,每個頁中采用 B 樹結構存儲涎嚼;

如果某些字段信息過長阱州,無法存儲在B樹節(jié)點中,這時候會被單獨分配空間法梯,此時被稱為溢出頁贡耽,該字段被稱為頁外列。

  • REDUNDANT 行格式
    使用 REDUNDANT行格式鹊汛,表會將變長列值的前768字節(jié)存儲在B樹節(jié)點的索引記錄中蒲赂,其余的存儲在溢出頁上。對于大于等于786字節(jié)的固定長度字段刁憋,InnoDB會轉換為變長字段滥嘴,以便能夠在頁外存儲。

  • COMPACT 行格式
    REDUNDANT 行格式相比至耻,COMPACT 行格式減少了約 20% 的行存儲空間若皱,但代價是增加了某些操作的 CPU 使用量镊叁。如果系統(tǒng)負載是受緩存命中率和磁盤速度限制,那么 COMPACT格式可能更快走触。如果系統(tǒng)負載受到 CPU 速度的限制晦譬,那么 COMPACT 格式可能會慢一些。

  • DYNAMIC行格式
    使用 DYNAMIC 行格式互广,InnoDB 會將表中可變長度的列值完全存儲在頁外敛腌,而索引記錄只包含指向溢出頁的 20 字節(jié)指針。大于或等于 768字節(jié)的固定長度字段編碼為可變長度字段惫皱。DYNAMIC 行格式支持大索引前綴像樊,最多可以為 3072 字節(jié),可通過innodb_large_prefix 參數(shù)控制旅敷。

  • COMPRESSED 行格式
    COMPRESSED 行格式提供與 DYNAMIC 行格式相同的存儲特性和功能生棍,但增加了對表和索引數(shù)據(jù)壓縮的支持。

在創(chuàng)建表和索引時媳谁,文件格式都被用于每個 InnoDB 表數(shù)據(jù)文件(其名稱與 *.ibd 匹配)涂滴。修改文件格式的方法是重新創(chuàng)建表及其索引,最簡單方法是對要修改的每個表使用以下命令:

ALTER TABLE 表名 ROW_FORMAT = 格式類型;
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末晴音,一起剝皮案震驚了整個濱河市氢妈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌段多,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壮吩,死亡現(xiàn)場離奇詭異进苍,居然都是意外死亡,警方通過查閱死者的電腦和手機鸭叙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門觉啊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沈贝,你說我怎么就攤上這事杠人。” “怎么了宋下?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵嗡善,是天一觀的道長。 經(jīng)常有香客問我学歧,道長罩引,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任枝笨,我火速辦了婚禮袁铐,結果婚禮上揭蜒,老公的妹妹穿的比我還像新娘。我一直安慰自己剔桨,他們只是感情好屉更,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著洒缀,像睡著了一般瑰谜。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帝洪,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天似舵,我揣著相機與錄音,去河邊找鬼葱峡。 笑死砚哗,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的砰奕。 我是一名探鬼主播蛛芥,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼军援!你這毒婦竟也來了仅淑?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤胸哥,失蹤者是張志新(化名)和其女友劉穎涯竟,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體空厌,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡庐船,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘲更。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筐钟。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赋朦,靈堂內(nèi)的尸體忽然破棺而出篓冲,到底是詐尸還是另有隱情,我是刑警寧澤宠哄,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布壹将,位于F島的核電站,受9級特大地震影響毛嫉,放射性物質(zhì)發(fā)生泄漏瞭恰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一狱庇、第九天 我趴在偏房一處隱蔽的房頂上張望惊畏。 院中可真熱鬧恶耽,春花似錦、人聲如沸颜启。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缰盏。三九已至涌萤,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間口猜,已是汗流浹背负溪。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留济炎,地道東北人川抡。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像须尚,于是被迫代替她去往敵國和親崖堤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容