[MySQL]InnoDB邏輯存儲結構

http://www.2cto.com/database/201308/237370.html
InnoDB存儲引擎中的表非常像Oracle中的索引組織表,每張表必須得有主鍵,如果表在創建時沒有顯示定義主鍵,則根據以下原則自動創建主鍵:
 
1)如果有非空的唯一索引,則該索引所在的列爲主鍵;
2)如果不符合上述條件,自動創建一個6個字節的指針爲主鍵。
 
InnoDB存儲引擎的邏輯存儲結構和Oracle幾乎一樣,從大到小分別爲:表空間、段、區、頁,它們的關係如下圖所示:
 
 
表空間
在上一篇《MySQL InnoDB文件介紹》http://www.2cto.com/database/201306/219327.html中,我們知道InnoDB有一個默認的表空間,如果我們啓用了參數innodb_file_per_table,則針對每張可以單獨放在表空間裏。這裏需要注意的是,即時啓用了innodb_file_per_table,也並不是表中所有的數據都單獨放在自己的表空間裏,單獨表空間只存放數據、索引和插入緩衝,其它如Undo、系統事務信息、二次寫緩衝等還是存放在默認共享表空間裏。
 
表空間有若干各段組成,常見的有數據段、索引段、回滾段等。前面提到InnoDB中的表是索引組織表,因此數據段也稱爲leaf node segment,索引段也稱爲non-leaf node segment。
 
每64個連續的頁組成區,因此區大小正好爲1M。
 
頁是InnoDB磁盤管理的最小單位,固定大小爲16K,不可以更改(也許通過更改源碼可以修改固定大小)。
 
InnoDB表中數據按行存儲。
發佈了16 篇原創文章 · 獲贊 5 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章