Mysql一行记录存储过程

Mysql一行记录存储过程

Mysql的文件架构

行(row)

数据库表中的记录都是行存放的,每行继续根据不同的行格式都有不同的存储结构。

页(page)

记录是按照行来存储的,但是数据库的读取是以页为单位的,也就是我们读一条数据,不是将这个数据从磁盘读取出来而是以页为单位,然后写入缓存,一个页的数据大小都是16kb

区(extent)

B+tree每一层都是用双向脸部连接的, 可能两个页相隔特别远。可能不是内存连续的。所以一个区包含多个页

段(segment)

表空间由各个段组成,因为段不是内存连续的,段一般分为数据段(主键树)、索引段(索引树)、回滚段。

INNODB Compact行格式

行格式分为记录额外信息记录真实数据

记录额外信息

​ **记录额外信息:**变长字段长度列表、NULL值列表、记录头信息

变长字段长度列表

​ varchar和char相比,char是定长度,而varchar是变长的,变长字段是寄存处的数据长度(大小)不固定。

​ 所以有了变长字段长度列表再去获取变长字段的时候就可以读取对应长度的数据。

​ 可变长字段长度列表是逆序存放的,比如存放的内容是03 01而不是01 03,如果为null不会存放

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来自xiaolin coding

为什么选择倒序存放

​ 这个设计是有想法的,主要是因为「记录头信息」中指向下一个记录的指针,指向的是下一条记录的「记录头信息」和「真实数据」之间的位置,这样的好处是向左读就是记录头信息,向右读就是真实数据,比较方便。

​ 因为可以让我们一个页中的靠前的真实记录的数据和数据丢赢的字段长度信息可以同时在同义词CPU Cache line中,可以提高我们CPU Cache的命中率。

NULL值列表

表中有一些列可能存放null值,但是把null值存入进去是比较浪费空间的,所以Compact行把这些值为null的存储到Null值列表中。

如果二进制位的值为1,那么该值为NULL,

如果二进制的值值为0,那么该值不为NULL

NULL值列表必须用整个字节的位表示(1字节8位),二进制个数不足高位补0

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图片来自xiaolin coding

最后转换为16进制是0x04

如果是

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传那么最后的的结果为0x004

每个字段都有NULL值列表吗?

​ 不是的,如果我们所有的字段就是NOT NULL就不会有,这样可以节省至少1字节。

记录头信息

**delete_mask:**删除标记

我们执行delete删除语句不会立刻从硬盘上删除,而是在INNODB的行结构COMpact的delete_mask进行标记,然后直到等待INNODB后来线程负责清理。这个做的原因是INNODB的一种优化策略叫做延迟删除,有助于提高性能和减少硬盘碎片。

recored_type: 表示当前记录的类型 0位普通记录(真实数据也可能是主键),1为非叶子结点记录(也可能是真索引也可能是主键),2为最小记录,3表示最大记录。

记录的真实数据

row_id

​ 如果我们有主键或者唯一约束列那么久就没有row_id.如果没有row_id隐藏字段,那么久就是没指定主键和唯一约束,

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/380377.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《MySQL 简易速速上手小册》第9章:高级 MySQL 特性和技巧(2024 最新版)

文章目录 9.1 使用存储过程和触发器9.1.1 基础知识9.1.2 重点案例:使用 Python 调用存储过程实现用户注册9.1.3 拓展案例 1:利用触发器自动记录数据更改历史9.1.4 拓展案例 2:使用 Python 和触发器实现数据完整性检查 9.2 管理和查询 JSON 数…

【前端素材】bootstrap5实现通用果蔬商城网页模板Netta Food(电商适用,附源码)

一、需求分析 通用果蔬商城网页是指专门为销售各类果蔬产品而设计的在线商城网页。它提供了一个方便的平台,使用户能够浏览、选择和购买各种果蔬产品。 通用果蔬商城网页通常具有以下功能: 商品展示:网页上展示各类果蔬产品的图片、价格、产…

使用C#读取PDF中所有文本内容

先安装如下包 using iTextSharp.text.pdf; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text;namespace ReadPdfText {class Program{static void Main(string[] args){string path "0017_审判流程管理信息表2…

VMware17上安装centos7.9

一、下载安装包: 1、VMware安装 VMware 下载地址: https://www.vmware.com/cn/products/workstation-pro.html VMware下载后安装即可 安装教程可以参考VMware安装教程 2、CentOs7.9下载地址: http://mirrors.aliyun.com/centos/7.9.2009/iso…

【C++】类的6个默认成员函数

目录 1. 类的6个默认成员函数 2. 构造函数 3. 析构函数 4. 拷贝构造函数 5. 运算符重载 5.1运算符重载 5.2赋值运算符重载 5.3前置和后置重载 5.4日期类的实现 6. const成员函数 7. 取地址及const取地址操作符重载 1. 类的6个默认成员函数 对于一个空类,编…

零基础学Python之Unitest模块

1.unittest简介及入门案例 (1)什么是Unitest Unittest是Python自带的单元测试框架,不仅适用于单元测试,还可用于Web、Appium、接口自动化测试用例的开发与执行。该测试框架可组织执行测试用例,并且提供丰富的断言方法…

Git合并多个commit

git rebase -i commitId 假设想要合并最后3个commit, git log显示 commit id 1 commit id 2 commit id 3 commit id 4 则执行git rebase -i commitId4. 注意是4,不是3. 然后,pick最老的commit (commit id 3). https://blog.csdn.net/qiao…

在 VMware 虚拟机上安装 CentOS系统 完整(全图文)教程

一、前期准备: 1.安装VMware 虚拟机软件(不在讲解,可自行去下载安装)。官网:https://customerconnect.vmware.com/cn/downloads/details?downloadGroupWKST-PLAYER-1750&productId1377&rPId111471 2.下载iso…

女博士眼里的“科学的尽头是玄学”

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 过年啦,拜年啦,吉祥话说起来吖!祝大家龙腾四海、龙马精神、龙飞凤舞、龙年大吉!不知道…

一条 SQL 更新语句是如何执行的?

之前你可能经常听 DBA 同事说,MySQL 可以恢复到半个月内任意一秒的状态,惊叹的同时,你是不是心中也会不免会好奇,这是怎样做到的呢? 我们先从一条更新语句讲起,首先创建一个表,这个表有一个主键…

内网穿透工具

1. nps-npc 1.1 简介 nps是一款轻量级、高性能、功能强大的内网穿透代理服务器。目前支持tcp、udp流量转发,可支持任何tcp、udp上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……)&#xff0c…

Git、github与gitee码云

1.git核心是两个仓库:本地仓库和远程仓库 主要用于团队合作和代码版本控制(个人现有版本代码出错可回溯上个提交版本的代码) 远程仓库国际主流githut,但外网速度问题,国内可使用码云gitee github:https:…

奇瑞汽车,好好卖车,别趟个人是非的浑水

文 | AUTO芯球 作者 | 雷歌 这下,奇瑞法务部忙都忙不过来了。 一个字,就是,告!告!告! 刚投诉完这家,又去告那家。 可是骂奇瑞的实在太多了,告不完,根本告不完。 有骂…

力扣刷题之旅:进阶篇(四)—— 滑动窗口问题

力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。 --点击进入刷题地址 引言: 在编程的世界里,滑动窗口问题是一种…

【漏洞复现】狮子鱼CMS某SQL注入漏洞01

Nx01 产品简介 狮子鱼CMS(Content Management System)是一种网站管理系统,它旨在帮助用户更轻松地创建和管理网站。该系统拥有用户友好的界面和丰富的功能,包括页面管理、博客、新闻、产品展示等。通过简单直观的管理界面&#xf…

自制微信红包封面

一.前言 这不是过年了吗,各大平台都发放了免费的微信红包封面,但我老是抢不到QAQ。于是乎,我便想“授人以鱼不如授人以渔”,不如自己造个封面。 二.主要步骤 1.条件 1>创建视频号 2>过去一年发表过视频号 3>过去一…

比较6*6范围内7个点182个结构的顺序

( A, B )---6*30*2---( 1, 0 )( 0, 1 ) 让网络的输入有6个节点,训练集AB各由6张二值化的图片组成,让A中有7个点,让B全是0,收敛误差7e-4,收敛199次,统计迭代次数平均值并排序。 得到顺序为 用6个点的结构标…

re:从0开始的CSS学习之路 1. CSS语法规则

0. 写在前面 现在大模型卷的飞起,感觉做页面的活可能以后就不需要人来做了,不知道现在还有没有学前端的必要。。。 1. HTML和CSS结合的三种方式 在HTML中,我们强调HTML并不关心显示样式,样式是CSS的工作,现在就轮到C…

整合 Axios

大家好我是苏麟 , 今天聊一下Axios . Axios Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpReques…

C++ 中的模型预测控制(01/2)

目录 一、说明二、MPC原理说明三、分解算法的来源并显示关键特征,四、C 实现说明五、平衡 Q 和 R六、资源下载地址 一、说明 以下文章介绍了应用模型预测控制器的简单控制系统方法。本文讨论了这种控制的基本机制,该机制适用于各种工程领域。 MPC 涉及对…
最新文章