InnoDB是一个将表中数据存储到磁盘上的存储引擎,即使我们关闭并重启服务器,数据依然存在。InnoDB存储引擎并不是一条一条的把记录从磁盘上读出,而是将数据划分为若干个页,以页作为磁盘和内存之间交互的基本单位。
我们平时都是以记录为单位向表中插入数据的,这些记录在磁盘上的存放形式也被称为行格式或者记录格式InnoDB存储引擎现在已经有4种不同类型的行格式,分别是COMPACTREDUNDANTDYNAMICCOMPRESSED
主要讲一下COMPACT行格式:

变长字段长度列表 NULL值列表 记录头信息 列1的值 列2的值 ··· 列3的值

一条完整的记录可以成为记录的额外信息(变长字段长度列表,NULL值列表,记录头列表)和记录的真实数据(列1的值,列2的值,···,列3的值)。
1.记录的额外信息
(1)变长字段长度列表
MySQL支持一些变长的数据类型,比如VERCHAR(M),VARBINARY(M),各种TEXT类型,各种BLOB类型,变长字节字段存储多少个字节的数据是不固定的,所以我们在存储真实数据的时候需要顺便把这些数据占用的字节页存起来。
COMPACT行格式中,所以变长字段的真实数据占用的字节数都存放在记录的开头位置,从而形成一个变长字段长度列表,各变长字段的真实数据占用字节数按着列的顺序逆序存放。
(2)NULL值列表
一条记录的某些列可能为NULL值,COMPACT行格式把一条记录中为NULL值的列统一管理起来。

  • 首先统计表中允许存储NULL值的列有哪些。
  • 如果表中没有允许存储NULL值的列,则NULL值的列表也不存在了,否则将每个存储NULL值得列对应一个二进制位,二进制位按着列的顺序逆序排列,二进制表示的意义如下:
    二进制位的值为1时,代表该列的值为NULL;
    二进制位的值为0时,代表该列的值不为NULL;
  • MySQL规定NULL值必须用整数个字节的位表示,如果使用的二进制位个数不是整个字节数,则字节的高位补0;

(3)记录头信息
记录头的信息由固定的5个字节组成,用于描述一些属性。
2.记录的真实数据
记录的真实数据除了我们自己定义的列的数据之外,MySQL会为每个记录默认的添加一些列(也称隐藏列),如下:

列名 是否必须 占用空间 描述
row_id 6字节 行ID,唯一标识一条记录
trx_id 6字节 事务ID
roll_pointer 7字节 回滚指针

从表中可以看出,InnoDB存储引擎会为每条记录都添加rx_idroll_pointer两个列,但是row_id是可选的(在没有自定义主键以及不允许存储NULL值得UNIQUE键的情况下才会添加该列)。

《Mysql是怎样运行的》读书笔记四相关推荐

  1. 穿越计算机的迷雾笔记

    目录 穿越计算机的迷雾_百度百科 从电开始了解计算机 用电来表示数 怎样才能让机器做加法 电子计算机发明的前夜 从逻辑学到逻辑电路 逻辑学 数理逻辑 数理逻辑和逻辑电路 加法机的诞生 会变魔术的触发器 ...

  2. 《关键对话——注意观察,如何判断对话氛围是否安全》读书笔记(四)

    <关键对话--注意观察,如何判断对话氛围是否安全>读书笔记(四) 在对话过程中,既要关注对话内容(即讨论的主题),也要观察对话气氛(即参与者的反应).越早意识到你和对方退出了对话机制,就越 ...

  3. 《编程之美》读书笔记(四): 卖书折扣问题的贪心解法

    <编程之美>读书笔记(四):卖书折扣问题的贪心解法 每次看完<编程之美>中的问题,想要亲自演算一下或深入思考的时候,都觉得时间过得很快,动辄一两个小时,如果再把代码敲一遍的话, ...

  4. 3d游戏设计读书笔记四

    3d游戏设计读书笔记四 一.基本操作演练[建议做] 下载 Fantasy Skybox FREE, 构建自己的游戏场景 a. 在AssetStore中搜索Fantasy Skybox FREE并下载. ...

  5. 《自律100天,穿越人生盲点》读书笔记

    大家好,我是烤鸭:     <自律100天,穿越人生盲点>,读书笔记. 第一章 "自律100天"的华丽开启 第一节 "自律100天"的底层逻辑 习惯 ...

  6. 《大型网站技术架构》读书笔记四:瞬时响应之网站的高性能架构

    来源:http://www.cnblogs.com/edisonchou/p/3809839.html 此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. ...

  7. 计算机专业英语 读书笔记

    告诉大家一个好消息,我终于要做程序员了.成功从一个本科园艺植物学的学生跨考成为计科学硕.所以我决定恶补下计算机专业英语. 选了本书,打算阅读.翻译.后续读书笔记也会更新在博客里. 卜艳萍.周伟老师编著 ...

  8. 《淘宝技术这十年》读书笔记 (四). 分布式时代和中间件

    前面两篇文章介绍了淘宝的发展历程.Java时代的变迁和淘宝开始创新技术:              <淘宝技术这十年>读书笔记 (一).淘宝网技术简介及来源              &l ...

  9. 《李元芳履职记》读书笔记四 (完结)

    决策不能拍脑袋 管理者不仅仅依靠"拍脑袋"进行决策,而是要用科学的方法加以指导: (决策流程) 工作分派就该这样做 管理者在分派下属工作时,不能"随性",而应该 ...

  10. 《穿越计算机的迷雾》读书笔记三

    计算机为什么会自动工作(计算)?这种"自动"本质上是怎么发生的? 用继电器制造逻辑门. 电子管 晶体管 脉冲,计数器 多个触发器可以构成一个寄存器 在逻辑电路里,大家共用的公共线路 ...

最新文章

  1. 流包装器实现WebShell免杀
  2. VMware vSphere学习笔记二
  3. mysql 插入怎么知道id_如何知道刚刚插入数据库那条数据的id
  4. 分号与逗号的区别及举例_如何掌握分号的用法 和顿号有什么区别
  5. JeecgBoot 连接达梦数据库
  6. 【Elasticsearch】Elasticsearch 存储桶聚合
  7. java 字符串contain_如何使用java.lang.String.contains()方法
  8. caffe 实践程序3——caffe提取特征以及由模型test数据
  9. 第 5-8 课:综合实战客户管理系统(⼆)
  10. 【读书笔记】李彦宏传-张丽,学霸李彦宏:北大信管+留学纽约州立大学+百度创始人
  11. OPPO R7Plusm(全网通)root、刷入twrp recovery、卡刷刷入CM系统教程合集_ recovery.img文件下载 联想A7600-m线刷刷机教程 手机卡在双4G双百兆无法开
  12. AntV G2 Tooltip
  13. [NOIP模拟16]题解
  14. 关于sungard和博彦的笔试
  15. 在Ubuntu安装和使用Anbox完整说明(一种在Linux使用Android应用的方法)
  16. 王健林电商梦为何会是一场噩梦?
  17. 8月5号 图论,拓扑排序入门
  18. J storm战队成员_DOTA2J.Storm战队介绍-DOTA2PIT深渊联赛预选赛J.Storm战队介绍_牛游戏网攻略...
  19. 将物流行业送往智能时代,菜鸟网络的配送车已经上路了
  20. 青岛外贸出口企业邮箱域名注册,做外贸企业邮箱重要吗?

热门文章

  1. *内存泄漏和内存溢出
  2. 谷歌提出超强预训练模型CoCa,在ImageNet上微调Top-1准确率达91%!在多个下游任务上SOTA!...
  3. 【python数据分析实战】国产烂片深度揭秘(3)——和什么国家更容易产生烂片?
  4. 直播需要加速吗?直播不用cdn加速的后果
  5. 日语笔记(3) 动词て形
  6. Coursera上有哪些相见恨晚的数据课程
  7. Java开发学习(三十四)----Maven私服(二)本地仓库访问私服配置与私服资源上传下载
  8. Cocos2d开发系列
  9. npm - 换淘宝源
  10. C#生成随机数的三种方法