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.20\mysql-5.7.20\storage\innobase\os0file.cc文件中的Encryption::encrypt和Encryption::decrypt两个函数中定义。
InnoDB表存储结构及keyring加密的更多相关文章
- innodb的存储结构
如下所示,innodb的存储结构包含:表空间,段,区,页(块),行 innodb存储结构优化的标准是:一个页里面存放的行数越多,其性能越高 表空间:零散页+段 独立表空间存放的是:数据.索引.插入缓冲 ...
- InnoDB 逻辑存储结构
本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/80 如果创建表时没有显示的定义主键,mysql会按如下方式创建主 ...
- MySQL InnoDB 逻辑存储结构
MySQL InnoDB 逻辑存储结构 从InnoDB存储引擎的逻辑结构看,所有数据都被逻辑地存放在一个空间内,称为表空间,而表空间由段(sengment).区(extent).页(page)组成.p ...
- MYSQL Innodb逻辑存储结构
转载于网络 这几天在读<MySQL技术内幕 InnoDB存储引擎>,对 Innodb逻辑存储结构有了些了解,顺便也记录一下: 从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放 ...
- Innodb页面存储结构-2
上一篇<Innodb页面存储结构-1>介绍了Innodb页面存储的总体结构,本文会介绍页面的详细内容,主要包括页头.页尾和记录的详细格式. 学习数据结构时都说程序等于数据结构+算法,而在i ...
- InnoDB逻辑存储结构
从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放在一个空间中,称之为表空间(tablespace).表空间又由段(segment).区(extent).页(page)组成.页在一些文档中 ...
- Innodb物理存储结构系列1
本篇先介绍 下Innodb表空间,文件相关的内存数据结构. 1. 数据结构 Innodb的tablespace和文件的关系,是一对多的关系,先来看三个结构体 1. fil_system_struct: ...
- MySQL InnoDB的存储结构总结
从物理意义上来讲,InnoDB表由共享表空间.日志文件组(redo文件组).表结构定义文件组成.若将innodb_file_per_table设置为on,则系统将为每一个表单独的生成一个table_n ...
- InnoDB数据存储结构
MySQL服务器上 存储引擎 负责对表中数据的读取和写入工作,不同存储引擎中 存放的格式 一般是不同的,甚至有的存储引擎(Memory)不用磁盘来存储数据. 页 (Page) 是磁盘和内存之间交互的基 ...
随机推荐
- Brainman(规律题)【数学思想】
Brainman 题目链接(点击) Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 12942 Accepted: 650 ...
- Codeforces Round #648 (Div. 2)
链接 : https://codeforces.com/contest/1365/problems problem A 统计可用的行和列的最小值, 模2输出即可 /* * Author: RoccoS ...
- 使用matplotlib进行可视化
转自:https://blog.csdn.net/qq_30614345/article/details/99049790 https://blog.csdn.net/qq_30614345/arti ...
- 这一次搞懂Spring事务是如何传播的
文章目录 前言 正文 事务切面的调用过程 事务的传播性概念 实例分析 总结 前言 上一篇分析了事务注解的解析过程,本质上是将事务封装为切面加入到AOP的执行链中,因此会调用到MethodIncepto ...
- 虹软AI 人脸识别SDK接入 — 参数优化篇
引言 使用了免费的人脸识别算法,感觉还是很不错的,但是初次接触的话会对一些接口的参数有些疑问的.这里分享一下我对一些参数的验证结果(这里以windows版本为例,linux.android基本一样), ...
- 初识MQ消息队列
MQ 消息队列 消息队列(Message Queue)简称MQ,是阿里巴巴集团中间件技术部自主研发的专业消息中间件. 产品基于高可用分布式集群技术,提供消息发布订阅.消息轨迹查询.定时(延时)消息.资 ...
- Perl入门(二)Perl的流程控制
Perl是一种粘性语言,如果你有其他语言的基础的话,你会发现他的流程控制完全和你所知的一模一样. 简单说一下他们的区别: Perl的elsif在其他语言里头可能表示为else if Perl的last ...
- Spring Boot]SpringBoot四大神器之Actuator
论文转载自博客: https://blog.csdn.net/Dreamhai/article/details/81077903 https://bigjar.github.io/2018/08/19 ...
- IDEA 使用jebel热部署插件启动失败
在使用Jebel热部署插件开发springmvc时,启动会出现内存溢出错误.可在配置Tomcat时增加JVM参数解决. -Xms768m -Xmx768m -XX:PermSize=64M -XX:M ...
- 物联网SIM卡和SIM卡,真的不是一回事
[摘要]在物联网解决方案中,设备移动上网也需要使用SIM卡.那么,SIM卡是什么?各种SIM卡有什么区别?物联网SIM卡如何选择?本文将为您答疑解惑. 通信进化史 过去几百年间,通信技术经历了天变地异 ...