1. 程式人生 > 其它 >MySql-InnoDB表

MySql-InnoDB表

一.表

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技術內幕》