mysql_innodb_index_page
2021-07-16 16:50:30   3  举报             
     
         
 mysql_innodb_index_page 图解
    作者其他创作
 大纲/内容
 (数据页)Page Header
  B+树非叶子段(仅在root页)
  ...
  File Header
  13Bytes*2
  PAGE_DIRECTION (2B)
  offset(2Bytes)
  FIL_PAGE_TYPE_BLOB (0x000A)
  next_record(16bits)(有序)从本条记录真正数据开始,向后数 next_record 个字节,就是下一条记录的真正数据。
  InnoDB 数据页(16KB)
  desc
  FIL_PAGE_TYPE (2bytes)
  记录头信息 (5bytes)
  Space ID of the INODE Entry (4B)
  非叶子节点段
  Records
  0x0070
  locate
  row_id( 6bytes 非必须)
  FIL_PAGE_LSN (8bytes)
  record_type(3bits)
  PAGE_LEVEL(2B)
  Infimum + Supremum (26 bytes)
  PAGE_CHKSUM (4bytes)
  FIL_PAGE_INDEX (0x45BF)
  文件系统
  空闲空间开始处
  变长字段长度列表
  supremum
  File Header (38 bytes)
  roll_pointer (7 bytes)
  PAGE_FREE (2B)
  PAGE_N_DIRECTION (2)
  0:用户记录1:B+树非叶子节点记录2:最小记录3:最大记录
  客户端
  MyISAM
  columns
  按照 primary key 从小到大排序
  PAGE_BTR_SEG_LEAF(10B)
  查询缓存
  PAGE_BTR_SEG_TOP(10B)
  INode Entry(192Bytes)
  Memory
  offset=99
  查询优化
  FIL_PAGE_OFFSET (4bytes)(页号)
  Page Directory
  叶子节点段
  FIL_PAGE_PREV (4bytes)
  B+树层级,叶子节点视为第 0 层
  InnoDB
  Byte Offset of the INODE Entry (2B)
  infimum
  File Trailer (8 bytes)
  版本链(MVCC)
  FIL_PAGE_TYPE_SYS (0x0006)
  FIL_PAGE_LSN 后四个字节
  0x0063
  primary key + page no
  NULL 值列表
  User Records
  FIL_PAGE_SPACE_OR_CHKSUM (4bytes)
  语法解析
  PAGE_INDEX_ID(8B)
  1.用户记录
  主键生成策略:1. 用户自定义的主键2. 没有自定义主键,取第一个 not null 的 unique 为主键。3. 1 和 2 都没有,采用系统提供的 row_id
  space_id(4Bytes)
  PAGE_MAX_TRX_ID(8B)
  Free Space
  PAGE_N_HEAP (2B)
  PAGE_LAST_INSERT (2B)
  Compact 行格式
  FIL_PAGE_TYPE_XDES (0x0009)
  每次更新前都会先写 undo log
  页面类型
  FIL_PAGE_IBUF_BITMAP (0x0005)
  is_insert(1bit)
  PAGE_N_DIR_SLOTS (2B)
  delete_mask(1bit)
  heap_no(13bits)(记录编号)
  Page Header (56 bytes)
  FIL_PAGE_ARCH_LOG_NO_OR_SPACE_ID(4bytes)
  min_rec_mask(1bit)
  n_owned(4bits)(分组)
  记录真正数据
  FIL_PAGE_UNDO_LOG (0x0002)
  Page Number of the INODE Entry (4B)
  PAGE_HEAP_TOP (2B)
  r_segid(7bits)
  PAGE_GARBAGE (2B)
  存储引擎 API
  FIL_PAGE_TYPE_FSP_HDR (0x0008)
  2.目录项
  FIL_PAGE_TYPE_TRX_SYS (0x0007)
  record_type =1
  INode Entry(192Bytes)(区+页)
  transtation_id (6bytes)
  slot
  LSN (4bytes)
  B+树叶子段(仅在root页)
  MySQL Server 
  FIL_PAGE_TYPE_ALLOCATED (0x0000)
  表空间 id
  FIL_PAGE_IBUF_FREE_LIST (0x0004)
  链表 + page directory
  FIL_PAGE_INODE (0x0003)
  记录额外信息
  PAGE_N_RECS (2B)
  FIL_PAGE_NEXT (4bytes)
  处理连接
  定位一个 undo log
  offset=112
  FIL_PAGE_FILE_FLUSH_LSN (8bytes)
  ReadView 借助 trx_id 
   
 
 
 
 
  0 条评论
 下一页
  
   
  
  
  
  
  
  
  
  
 