InnoDB資料字典詳解-系統表

yzs87發表於2018-04-05

1、簡介

InnoDB中,實際上看不到系統表。有4個最基本的系統表來儲存表的後設資料:表、列、索引、索引列等資訊。這4個表分別是SYS_TABLES、SYS_COLUMNS、SYS_INDEXES、SYS_FIELDS。下面分別介紹

2、SYS_TABLES

儲存所有以InnoDB為儲存引擎的表,每條記錄對應一個表。該表的列分別是:

    NAME:表名

    ID:表的ID號

    N_COLS:表的列數

    TYPE:表的儲存型別,包括記錄的格式、壓縮等資訊

    MIX_ID、MIX_LEN、CLUSTER_NAME:暫時未用

    SPACE:這個表所在的表空間ID。

這個表在NAME上有聚集索引,ID上有唯一二級索引。

3、SYS_COLUMNS

儲存列資訊,每一列對應一條記錄。表列:

    TABLE_ID:該列所屬表的ID

    POS:該列在表中第幾列

    NAME:列名

    MTYPE:列的主資料型別

    PRTYPE:列的精確資料型別

    LEN:列資料長度,不包括varchar型別,因為該型別在記錄裡面已經儲存了

    PREC:列資料的精度。

該表的主鍵列是(TABLE_ID,POS)

4、SYS_INDEXES

儲存索引資訊,每條記錄對應一個索引。

    TABLE_ID:該列所屬表的ID

    ID:索引的索引號

    NAME:索引名

    N_FIELDS:索引包含的列數

    TYPE:索引型別,包括聚集索引、唯一索引、DICT_UNIVERSAL、DICT_IBUF

    SPACE:索引所在表的表空間ID

    PAGE_NO:該索引對應的B+樹的根頁面號。

該表主鍵(TABLE_ID,ID)

5、SYS_FIELDS

儲存定義的索引列,每條記錄對應一個索引列:

    INDEX_ID:該列所在的索引ID

    POS:該列在索引中第幾列

    COL_NAME:列名

該表主鍵是(INDEX_ID,POS)

6、資料字典表根頁面位置,在innodb中使用系統表空間0號檔案的第7號頁面儲存。該頁面儲存了上面4個表的5個根頁號,以及下一個表ID值、下一個索引ID值、下一個表空間ID值、rowid。第7號頁結構如下所示:


dict0boot.h::

點選(此處)摺疊或開啟

  1. /* Dictionary header offsets */
  2. #define DICT_HDR_ROW_ID 0 /* The latest assigned row id */
  3. #define DICT_HDR_TABLE_ID 8 /* The latest assigned table id */
  4. #define DICT_HDR_INDEX_ID 16 /* The latest assigned index id */
  5. #define DICT_HDR_MAX_SPACE_ID 24 /* The latest assigned space id,or 0*/
  6. #define DICT_HDR_MIX_ID_LOW 28 /* Obsolete,always DICT_HDR_FIRST_ID*/
  7. #define DICT_HDR_TABLES 32 /* Root of SYS_TABLES clust index */
  8. #define DICT_HDR_TABLE_IDS 36 /* Root of SYS_TABLE_IDS sec index */
  9. #define DICT_HDR_COLUMNS 40 /* Root of SYS_COLUMNS clust index */
  10. #define DICT_HDR_INDEXES 44 /* Root of SYS_INDEXES clust index */
  11. #define DICT_HDR_FIELDS 48 /* Root of SYS_FIELDS clust index */
  12.   
  13. #define DICT_HDR_FSEG_HEADER 56 /* Segment header for the tablespace segment into which the dictionary header is created */
下一節講解系統表的載入及普通表資料字典的載入原理。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31493717/viewspace-2152628/,如需轉載,請註明出處,否則將追究法律責任。

相關文章