mysql页中的行记录头部信息
mysql中具体的数据是存储在行中的,而行是存储在页中的。也就是说页是凌驾于行之上的。
mysq一个页大小为16K,当然这个大小是可以通过修改配置文件来改变的。
mysql页结构大致示意图:

当我们新建一个表的时候表中用户记录部分(user records)部分是空的,在我们插入一条记录后会被记录到其中,直到插入满时会把记录信息刷入到下一个页中,循环往复。。。
记录头信息大致示意图:

1.delete_mask:表示该行记录是否被删除其实就是删除记录的标识位并占用一个二进制位,其中0--未删除 1--已删除
2.heap_no:表示当前记录在该页中的位置,除此之外heap_no中还存在两条虚拟记录行用于记录当前页中最大记录和最小记录的主键值
3.next_record:表示当前记录的真实数据到下一条记录的真实数据的地址偏移量,其实这就是个单项链表,可以通过一条记录找到下一条记录。但值得注意的是下一条记录并不是我们插入顺序的下一条记录而是按照主键值由小到大的顺序的下一条记录。而且规定最小记录的下一条记录就是本页中存储的主键值最小的记录,而本页中主键值最大的记录的下一条记录就是本页中的最大记录
如图所示:

上图所示的记录的顺序是顺序插入的记录顺序(1.2.3.4),可是我们在实际开发中经常会出现非顺序插入的情况。如下图所示:

当出现非顺序插入的情况,虽然插入顺序由(1.2.3.4)变为了(1.2.4.3)但是它的链表顺序是不会改变的依旧保持(1.2.3.4)这里需要注意的是图中heap_no的顺序插入和heap_no的非顺序插入是不一样的。
当我们在实际开发过程中出现表记录删除的情况时上图中的相应记录信息也会发生变化例如:最大记录行和最小记录行的变化(可能会变化)、next_record的变化(参照数据结构中单链表删除时的变化,后继指针置空操作)、delete_mask的变化(0--未删除 1--已删除)、heap_no的变化、n_owned值的变化
注意:不论我们怎么做增删改操作,InnoDB对页中的数据始终会维护一个单向链表,链表中各个节点是按照主键值由小到大的顺序来存储的
mysql页中的行记录头部信息的更多相关文章
- 在 .NET Core 中使用 DiagnosticSource 记录跟踪信息
前言 最新一直在忙着项目上的事情,很久没有写博客了,在这里对关注我的粉丝们说声抱歉,后面我可能更多的分享我们在微服务落地的过程中的一些经验.那么今天给大家讲一下在 .NET Core 2 中引入的全新 ...
- mysql 数据库中存在重复记录,删除保留其中一条
DELETE FROM people WHERE peopleName IN ( SELECT peopleName FROM people GROUP BY peopleName HAVING ) ...
- MySQL批量UPDATE多行记录
UPDATE categories SET display_order = CASE id WHEN 1 THEN 3 WHEN 2 THEN 4 ...
- 查mysql字段中的数字记录
select * from a where nameregexp '^[0-9]+$' ;
- MYSQL内置MYSQL数据库中你可以得到的信息
1:help_topic 可以查看函数帮助,例如:SELECT * from help_topic WHERE name='concat' 可以查看concat函数. 2:SLOW_LOG 慢查询日 ...
- 数据页结构 .InnoDb行格式、以及索引底层原理分析
局部性原理 局部性原理是指CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中. 首先要明白局部性原理能解决的是什么问题,也就是主存容量远远比缓存大, CP ...
- 聊一聊 MySQL 数据库中的那些锁
在软件开发中,程序在高并发的情况下,为了保证一致性或者说安全性,我们通常都会通过加锁的方式来解决,在 MySQL 数据库中同样有这样的问题,一方面为了最大程度的利用数据库的并发访问,另一方面又需要保证 ...
- 转 MySQL中的行级锁,表级锁,页级锁
对mysql乐观锁.悲观锁.共享锁.排它锁.行锁.表锁概念的理解 转载. https://blog.csdn.net/puhaiyang/article/details/72284702 实验环境 ...
- [数据库事务与锁]详解五: MySQL中的行级锁,表级锁,页级锁
注明: 本文转载自http://www.hollischuang.com/archives/914 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的 ...
- 【数据库】数据库的锁机制,MySQL中的行级锁,表级锁,页级锁
转载:http://www.hollischuang.com/archives/914 数据库的读现象浅析中介绍过,在并发访问情况下,可能会出现脏读.不可重复读和幻读等读现象,为了应对这些问题,主流数 ...
随机推荐
- Selenium KPI接口- 鼠标案例
鼠标操作 实现功能:百度页面->移动到'设置'按钮->右键点击/鼠标双击/鼠标拖拽到元素松开. 首先导入ActionChains方法 使用格式:ActionChains(driver).操 ...
- 解决kali虚拟机无法联网问题
解决kali虚拟机无法联网问题 1.排查虚拟机网络连接-检查ipv4设置,确定好手动连接还是DHCP 如图一 2.排查虚拟网络编辑器-网卡配置,确定虚拟机直连外部网络是否为同一网口 如图二 3.排查虚 ...
- Loongson Log
就看看能坚持多久吧 22/2/2及以前: 参照想象中的p7内容增添部分版CP0.部分中断/异常机制: 改sram接口:查阅文档func_test.sram相关内容:查阅vivado bram IP核相 ...
- Qt 给窗口绘制阴影
文章目录 Qt 给窗口绘制阴影 前言 重载`paintEvent`法 QGraphicsDropShadowEffect方法 使用九图拼凑法 九宫格缩放阴影法 Qt 给窗口绘制阴影 前言 最近自定义一 ...
- Golang 入门 : 变量
变量 Go语言是静态强类型语言,所以变量是有明确类型的.变量实质上就是在内存中的一小块空间,用来存储特定类型的可变数据.如果没有变量我们的程序只能将数值写死都是静态的数据,无法更改,变量可以让我们进行 ...
- bug|electron-vue 使用 electron-builder 打包,执行 yarn run build 报错原因
问题 & 解决 官方BUG:tasks 重复: yarn run build yarn run v1.22.22 $ node .electron-vue/build.js && ...
- MySQL-排序相关原理分析
全字段排序和rowId排序 建表语句如下: CREATE TABLE `t` ( `id` int(11) NOT NULL, `city` varchar(16) NOT NULL, `name` ...
- “你觉得客户需要”是杀死TA的最后一根稻草 | IPD集成产品开发
这个米老鼠洗衣机,大家眼熟吗? 相信最近热衷于在网上冲浪的朋友们,对这款形似米老鼠的"懒人洗衣机"并不陌生,甚至算是小小地参与了一下这个产品研发项目.在海尔的周云杰总裁爆火出圈后, ...
- Python科学计算系列9—逻辑代数
1.基本定理的验证 代码如下: from sympy import * A, B, C = symbols('A B C') # 重叠律 # A·A=A A+A=A print(to_cnf(A | ...
- 返回值分类 (void、string、 modelAndView)
/** * 返回值分类 : 字符串:方法返回字符串可以指定逻辑视图名,通过视图解析器解析为物理视图地址 void: 我们可以使用Servlet 原始 API 可以作为控制器中方法的参数: ModelA ...