[MySQL]InnoDB邏輯存儲(chǔ)結(jié)構(gòu)
InnoDB存儲(chǔ)引擎中的表非常像Oracle中的索引組織表,每張表必須得有主鍵,如果表在創(chuàng)建時(shí)沒(méi)有顯示定義主鍵,則根據(jù)以下原則自動(dòng)創(chuàng)建主鍵:
1)如果有非空的唯一索引,則該索引所在的列為主鍵;
2)如果不符合上述條件,自動(dòng)創(chuàng)建一個(gè)6個(gè)字節(jié)的指針為主鍵。
InnoDB存儲(chǔ)引擎的邏輯存儲(chǔ)結(jié)構(gòu)和Oracle幾乎一樣,從大到小分別為:表空間、段、區(qū)、頁(yè),它們的關(guān)系如下圖所示:
表空間
在上一篇《MySQL InnoDB文件介紹》http://www.bitsCN.com/database/201306/219327.html中,我們知道InnoDB有一個(gè)默認(rèn)的表空間,如果我們啟用了參數(shù)innodb_file_per_table,則針對(duì)每張可以單獨(dú)放在表空間里。這里需要注意的是,即時(shí)啟用了innodb_file_per_table,也并不是表中所有的數(shù)據(jù)都單獨(dú)放在自己的表空間里,單獨(dú)表空間只存放數(shù)據(jù)、索引和插入緩沖,其它如Undo、系統(tǒng)事務(wù)信息、二次寫(xiě)緩沖等還是存放在默認(rèn)共享表空間里。
段
表空間有若干各段組成,常見(jiàn)的有數(shù)據(jù)段、索引段、回滾段等。前面提到InnoDB中的表是索引組織表,因此數(shù)據(jù)段也稱(chēng)為leaf node segment,索引段也稱(chēng)為non-leaf node segment。
區(qū)
每64個(gè)連續(xù)的頁(yè)組成區(qū),因此區(qū)大小正好為1M。
頁(yè)
頁(yè)是InnoDB磁盤(pán)管理的最小單位,固定大小為16K,不可以更改(也許通過(guò)更改源碼可以修改固定大?。?。
行
InnoDB表中數(shù)據(jù)按行存儲(chǔ)。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com