innodb表空間儲存結構
儲存結構
*Innodb的邏輯儲存結構如圖所示:
其空間管理由段,區和頁構成。段包括葉子節點段,即所有索引的葉子節點都儲存在這個段裡,葉子節點儲存資料(次級索引是主鍵)和鍵值,這可以方便管理並且減少隨機io;還包括非葉子節點,儲存的是指向另外節點的指標和鍵值;回滾段儲存的是每個表的undo日誌(具體分析可看redo&undo日誌解析)。
區的大小固定為1M,不過當一個單獨表空間剛申請時,僅有96kb,只有用完這些空間才會分配一整塊區。
頁預設為16kb,innodb儲存引擎中常見的頁有資料頁,undo頁,系統頁,事務資料頁,bitmap頁等。
行記錄格式一般為兩種,一種compact,包括變長的列長度表,如果該列長度小於255位元組,則該列長度用1位元組表示(剛好最大值255),大於則2位元組(varchar最長65535bytes,實際最多為65532位元組),隨後是null標記位如果該行有null值則置為1,隨後是5位元組記錄頭,其中包含了是否被刪除的標記位,索引堆中排序序號,下一條記錄位置等資訊。是否被刪除主要是用於多版本控制。隨後的即為各種列資料,其中還包含兩個隱藏列:事務ID列用於多版本控制,回滾指標列用於事務。另一種是redundant,跟compact的區別是沒有null標記位,記錄頭為6位元組,多了一個n_fields表明有多少列,一共10位最多1023列。當行記錄溢位時(超過一頁的大小),會把記錄中的長位元組列轉換為blob頁單獨儲存,該記錄中列的位置儲存指向blob頁的指標。
頁的頭部儲存的比較重要的資料有:儲存了checksum,用來校驗頁資料是否正確;LSN,主要用在崩潰恢復時,該頁redo記錄的LSN跟該頁的LSN比較,如果該頁的LSN要大那麼就不對該頁做redo了避免重複恢復;還儲存了前一個頁和後一個頁的指標,實質應該是頁偏移,因為最小單位是頁;儲存了該頁在的頁偏移值;儲存了頁中第一條記錄的指標;以及儲存了一個最小記錄(鍵值比該頁中任何都要小)和一個最大記錄(鍵值比任何一個都大);儲存了最大事務id,在次級索引覆蓋索引查詢時可以迅速判斷整頁是否都可以被看見(read view判斷)。可以看出頁之間是雙向連結串列連線(儘管可能並不是物理位置相鄰)並且頁中記錄也是單向連結串列連線。
相關文章
- InnoDB的邏輯儲存結構是什麼,表空間組成包括哪些?
- 遷移表結構時儲存空間過大問題
- InnoDB記錄儲存結構
- MySQL Innodb 儲存結構 & 儲存Null值 解析MySqlNull
- MySQL InnoDB的儲存結構總結MySql
- 【儲存管理】表空間概念
- InnoDB儲存引擎——表儲存引擎
- MySQL的varchar儲存原理:InnoDB記錄儲存結構MySql
- 【儲存管理】建立永久表空間
- MySQL InnoDB儲存引擎體系結構MySql儲存引擎
- PG的物理儲存結構、版本控制、空間回收
- MySQLInnoDB儲存引擎(一):精談innodb的儲存結構MySql儲存引擎
- MySQL InnoDB表空間加密MySql加密
- MySQL InnoDB 共享表空間和獨立表空間MySql
- MySQL InnoDB 共享表空間和獨立表空間MySql
- oracle 修改表空間儲存路徑Oracle
- MySQL提升筆記(4)InnoDB儲存結構MySql筆記
- MySQL-07.InnoDB資料儲存結構MySql
- 表在表空間中的儲存情況
- [DB2]表空間之DMS、自動儲存的DMS表空間DB2
- Configure innodb 表空間
- MySQL InnoDB Undo表空間配置MySql
- MySQL 5.6 InnoDB儲存引擎體系結構圖MySql儲存引擎
- PostgreSQL儲存智慧-空間聚集儲存SQL
- Oracle的邏輯結構(表空間、段、區間、塊)——表空間Oracle
- MySQL innodb共享表空間新增表空間資料檔案方法MySql
- MySQL InnoDB臨時表空間配置MySql
- 【儲存管理】建立臨時表空間組、建立臨時表空間組及使用
- Mysql-Innodb : 從一個位元組到整個資料庫表瞭解物理儲存結構和邏輯儲存結構MySql資料庫
- mysql儲存引擎InnoDB詳解,從底層看清InnoDB資料結構MySql儲存引擎資料結構
- 2 Day DBA-管理Oracle例項-管理資料庫儲存結構-關於表空間Oracle資料庫
- 多名稱空間結合cgroup保障儲存QoS
- 【TABLESPACE】Oracle 表空間結構說明Oracle
- Oracle基礎結構之表空間Oracle
- MySQL 增加InnoDB系統表空間大小MySql
- MySQL InnoDB File-Per-Table表空間MySql
- 儲存結構
- 從一條資料說起——InnoDB儲存資料結構資料結構