MySQL InnoDB存储引擎锁与事务实现原理解析(未完成)
创始人
2024-06-01 18:30:43
0

InnoDB

MySQL存储引擎是基于表的,也就是说每张表可以选择不同的存储引擎。
InnoDB存储引擎的表是索引组织的,也就是数据即索引。

存储引擎文件

InnoDB引擎会包含RedoLog重做日志文件和TableSpace表空间文件。

表空间文件

默认表空间文件(共享表空间):一个10MB的ibdata1的文件,该文件能够自动增长。
共享表空间存放:撤销日志UndoLog、系统事务信息、双写缓冲

文件格式

  1. frm文件:存储表结构信息
  2. ibd文件:存储当前表的数据、索引、插入缓冲
参数配置
innodb_data_file_path: 指定默认表空间文件地址
innodb_file_per_table: 是否为每个表单独产生一个表空间

在这里插入图片描述

RedoLog文件

存储引擎默认重做日志文件:ib_logfile0和ib_logfile1。

重做日志:记录了InnoDB的事务日志,可以用于恢复日志(断电)

表数据的组织

在这里插入图片描述

主键问题

每张表必须要有主键,按照如下的三种方法选取主键

  • 显式定义主键
  • 选择非空唯一索引做主键
  • 自动创建6字节大小的指针主键

表空间tablespace

表空间用于存放表的数据、索引和插入缓冲。

段segment

表空间由各个段组成,常见的有数据段、索引段、回滚段。
数据段是B+树的叶节点段,索引段是B+树的非叶节点段。

区extent

区是64个连续的页组成的。1个区大小:16KB*64 = 1MB。

页page

页是InnoDB磁盘管理的最小单位,大小为16KB。
常见的页类型:

  1. 数据页
  2. Undo页
  3. 系统页
  4. 事务数据页
  5. 插入缓冲位图页
  6. 插入缓冲空闲列表页
  7. 未压缩的二进制大对象页
  8. 压缩的二进制大对象页

InnoDB是面向行的,即数据时按行存放的(也有列数据库如Hbase)。

InnoDB物理存储结构

行记录格式

Compact格式

  • 于MySQL5.0引入
    行的格式如下:
变长字段长度列表(按列逆序),NULL标志位,记录头信息,列1数据,列2数据,...,事务id,回滚指针,RowID(如果没有主键)

Redundant格式

  • MySQL5.0之前的版本,用于向前兼容
    行格式如下:
字段长度偏移列表(按列逆序),记录头信息,列1数据,列2数据...

事务

参考文献

【1】MySQL技术内幕 InnoDB存储引擎 姜承尧
【2】MySQL技术内幕 第五版 Paul DuBois

相关内容

热门资讯

不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
安卓文字转语音tts没有声音 安卓文字转语音TTS没有声音的问题在应用中比较常见,通常是由于一些设置或者代码逻辑问题导致的。本文将...
APK正在安装,但应用程序列表... 这个问题可能是由于以下原因导致的:应用程序安装的APK文件可能存在问题。设备上已经存在同名的应用程序...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
保存时出现了1个错误,导致这篇... 当保存文章时出现错误时,可以通过以下步骤解决问题:查看错误信息:查看错误提示信息可以帮助我们了解具体...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...