MySql-InnoDB表
阿新 • • 發佈:2022-04-08
一.表:
1.從儲存引擎的邏輯儲存結構來看,所有資料都被邏輯的存放在一個空間,稱之為表空間。表空間由段,區,頁(塊)組成。
二. 段:
表由段組成,常見索引段,資料段等。
三.區:
區由連續頁組成,大小為1M。為保證區中頁的連續性,儲存引擎一次性取4~5個區。預設頁大小16K,即一個區中共有64個連續頁。
頁的大小可以設定為2K,4K,8K,對應區中的頁數量512,256,128.
注意,表建立預設96k,一個區64頁(1M),表是由區組成的,那麼表至少應該1M才對,實際才96K?其實這是因為在每個段開始的時候,先用32個頁大小的碎片頁來存放資料,使用完後才是連續的64頁,這樣對於一些小表節省空間。
四.頁
頁是InnoDB磁碟管理的最小單位。
頁的大小可以設定,但一旦設定完成將不可以再次修改。
五.行
InnoDB儲存引擎的資料是按行存放的。一頁最多存放16K/2-200行記錄,即7992行。
一頁16K,每行至少2位元組,每個頁都要預留200位元組。
1.溢位行:
InnoDB儲存引擎可以將一條記錄中的某些資料儲存在真正的資料頁面之外。一般認為BLOB、LOB這類的大物件列型別的儲存會把資料存放在資料頁面之外。但是,這個理解有點偏差,BLOB可以不將資料放在溢位頁面,而且即便是VARCHAR列資料型別,依然有可能被存放為行溢位資料。
摘自《MySQL技術內幕》