zoukankan      html  css  js  c++  java
  • InnoDB表存储结构及keyring加密

    ibdata是InnoDB最重要的系统表空间文件,它记录了InnoDB的核心信息,包括事务系统信息、元数据信息,记录InnoDB change buffer的btree,防止数据损坏的double write buffer等等关键信息。

    InnoDB逻辑存储空间称为表空间,表是由段(segment)、区(extent)、页(page)组成。

    表空间:所有数据都被逻辑地存放在一个空间中,被称为表空间。默认情况下InnoDB存储空间有一个共享表空间ibdata1,所有数据都存放在这个表空间内。如果想单独存放在一个表空间,需要启动参数innodb_file_per_table。单独表空间只存放数据、索引和插入缓冲,其他的数据,如撤销信息、系统事务信息、二次写缓冲等还是存放在原来的共享表空间。

    段空间:常见的段有数据段、索引段、回滚段。因为InnoDB存储引擎是索引组织的,因此数据即索引,索引即数据。所以数据段即B+树的页节点,索引段即B+树的非索引节点。

    区空间;区是由64个连续的页组成,每个页大小为16KB,则一个区为1MB。对于大的数据段,InnoDB最多可以申请4个区。启用innodb_file_per_table后,创建的表默认大小是96KB,按照区是64个连续的页,不应该是1MB才对嘛,其实因为每个段开始有32个页大小的碎片页存放数据,使用完这些页才对64个连续页申请。

    页空间:页是InnoDB磁盘管理的最小单位,页的大小是16KB。

    行:InnoDB存储引擎是面向行的,数据按行进行存放。

    InnoDB物理存储结构,从物理意义上来看,InnoDB表由共享表空间、日志文件组(Redo文件组)、表结构定义文件组成。每个表单独产生一个表空间文件,以ibd结尾,数据、索引、表的内部信息都保存在这个单独的表空间文件中。表结构定义文件已frm结尾,这个文件与存储引擎无关,任何存储引擎的表结构定义文件都一样,为.frm文件.

    .ibd文件页介绍

    第1个Page类型为FIL_PAGE_TYPE_FSP_HDR,在创建一个新的表空间时进行初始化(fsp_header_init),该page同时用于跟踪随后的256个Extent(约256MB文件大小)的空间管理,所以每隔256MB就要创建一个类似的数据页,类型为FIL_PAGE_TYPE_XDES ,XDES Page除了文件头部外,其他都和FSP_HDR页具有相同的数据结构,可以称之为Extent描述页,每个Extent占用40个字节,一个XDES Page最多描述256个Extent。

    第2个page类型为FIL_PAGE_IBUF_BITMAP,主要用于跟踪随后的每个page的change buffer信息,使用4个bit来描述每个page的change buffer信息。

    第3个page的类型为FIL_PAGE_INODE,用于管理数据文件中的segement,每个索引占用2个segment,分别用于管理叶子节点和非叶子节点。每个inode页可以存储FSP_SEG_INODES_PER_PAGE(默认为85)个记录。

    Keyring:对于加密页,除了数据部分被替换成加密数据外,其他部分和大多数表都是一样的结构。

    加解密的逻辑和Transparent Compression类似,在写入文件前加密(os_file_encrypt_page --> Encryption::encrypt),在读出文件时解密数据(os_file_io_complete --> Encryption::decrypt)

    秘钥信息存储在ibd文件的第一个page中(fsp_header_init --> fsp_header_fill_encryption_info),当执行SQL ALTER INSTANCE ROTATE INNODB MASTER KEY时,会更新每个ibd存储的秘钥信息(fsp_header_rotate_encryption)

    加密函数在mysql-5.7.20mysql-5.7.20storageinnobaseos0file.cc文件中的Encryption::encrypt和Encryption::decrypt两个函数中定义。

  • 相关阅读:
    【BZOJ】1827: [Usaco2010 Mar]gather 奶牛大集会
    【BZOJ】1708: [Usaco2007 Oct]Money奶牛的硬币
    【BZOJ】1690: [Usaco2007 Dec]奶牛的旅行
    【BZOJ】1725: [Usaco2006 Nov]Corn Fields牧场的安排
    【BZOJ】1711: [Usaco2007 Open]Dining吃饭
    【BZOJ】1579: [Usaco2009 Feb]Revamping Trails 道路升级
    【BZOJ】1572: [Usaco2009 Open]工作安排Job
    【51NOD】1717 好数
    【POJ】3233 Matrix Power Series
    【BZOJ】1717: [Usaco2006 Dec]Milk Patterns 产奶的模式
  • 原文地址:https://www.cnblogs.com/smartwhite/p/7760318.html
Copyright © 2011-2022 走看看