28 mysql 数据记录的 存储更新删除

news2024/11/8 6:45:17

前言

前面 我们探讨了 索引记录的 新增, 更新, 删除 

这里 我们来看一下 mysql 的核心数据记录的 新增更新删除 

这里 来看一下 增删改 的相关实现 

数据记录 和 索引记录 的处理方式是一致的 

 

 

mysql 数据记录的存储

新增部分参见 自增长主键的实现 以及 记录的插入

 

 

mysql 数据记录的更新

主要是分为几种情况, 如果各个字段的长度没有变化, 则直接在原有的记录上面更新  

否则 将更新拆分为 删除 + 新增 操作 

 

如果更新之后占用的空间大于目前占用的空间 

因为 mysql 实际存储的 rec 是紧凑布局的 

因此 需要存储的记录空间大于更新之前的记录空间, 则需要删除原有的记录, 新增更新之后的记录 

5d62756a42ff47f5851d0918cb9f8ae0.png

 

 

如果更新之后占用的空间等于目前占用的空间 

直接在当前记录的基础上面更新 

执行sql 更新如下 “update tz_test_02 set field1 = 'field35' where id = 35;”

记录 35 的当前状态如下, 我们这里更新 field1 字段为 “field35”

a640b16ff7a1470da87a8ee87528f305.png

 

 

更新的时候 上下文如下

data 为待更新的目标值, data 为从 record 中获取的 field1 的地址 

这里使用 memcpy 更新 record.field1

d08cb94a44834fa58a023350c93d9fda.png

 

更新之前, rec 信息如下 

6bb7be9b2e9e4eea9b418e2688685bd5.png 

 

更新之后 rec 信息如下 

c7c65ec3f0f548eaac6617ced3aada8a.png 

 

 

如果更新之后占用的空间小于目前占用的空间 

直接在当前记录的基础上面更新 

执行sql 更新如下 “update tz_test_02 set field1 = 'field3' where id = 35;”

这里判断更新字段的字段大小有调整, 这里直接返回 false, 外面退出 row_upd_clust_rec 之后走 btr_cur_pessimistic_update, 删除原有记录, 新增更新之后的记录 

9ca9ff52d76b49ba9f2835917559b58a.png

 

走悲观处理流程, 删除原有的记录, 新增更新之后的记录 

4cabe757a5ac452abc5c32e0110488c4.png 

 

mysql 记录的删除 

这里以更新记录, 增加记录所需要的空间长度为例来调试 记录的删除

执行 sql 如下 “update tz_test_02 set field1 = 'field33111' where id = 148;”

 

删除类似于如下 prev->next = current->next

只是 next 是根据偏移的来计算

b843c9c6027345f18788fc93a7a05245.png

 

将当前节点的 next 更新为 page->FREE, 然后更新 page->FREE 为 current

b235aef4d77d4f2daa1b6ad54b841f48.png

 

待删除记录信息如下, 这就是 148 记录更新之前的情况 

828b8ce7d08e491ba1c7c0012cf00e11.png

 

执行 sql 如下 “delete from tz_test_02 where id = 148;”

任务执行的时候, 在记录上面打上了 删除标记

ec2d822888fe42e291ab0c780f8c6260.png

 

删除的时候情况如下, 这是在 任务 中删除的

bba6c0f9a3394a71b0fe86be5e9cbb9c.png 

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决提交到App Store时的ITMS-90478和ITMS-90062错误

目录 引言 正文 1. 什么是ITMS-90478和ITMS-90062错误? 2. 解决方法 2.1 确定当前的版本号和构建号 2.2 递增版本号和构建号 2.3 再次尝试提交应用 总结 参考资料 错误记录 摘要:本文为iOS技术博主分享,将详细介绍解决提交应用到App…

QCustomPlot添加标题头

1 效果图 2 代码 is2Label QString("add title layout element");// add title layout element:ui->customplot->plotLayout()->insertRow(0);ui->customplot->plotLayout()->addElement(0, 0, new QCPTextElement(ui->customplot, xAxis2Lab…

设备巡检管理系统有什么用?企业如何提高生产效率和生产安全?

在当今工业生产领域,设备巡检的重要性不言而喻。然而,传统巡检方式存在的诸多问题,如数据不规范、漏检误检等,严重制约了企业生产效率和产品质量。为解决这一问题,我们推出了一款设备巡检管理系统——“的修”工单管理…

宝塔Nginx配置反向代理后如何配置跨域?

直接将 27行更换成如下配置即可 上图有示例 if ( $static_fileAUWz2fmi 0 ){add_header Cache-Control no-cache;add_header Access-Control-Allow-Origin "$http_origin";add_header Access-Control-Allow-Methods GET, POST, PUT, DELETE, OPTIONS;add_header Acc…

ASEMI肖特基二极管MBR10100CT参数,MBR10100CT封装

编辑-Z MBR10100CT参数描述: 型号:MBR10100CT 最大重复峰值反向电压VRRM:100V 最大RMS电压VRMS:70V 最大直流阻断电压VDC:100V 最大平均正向电流IF:10A 峰值正向浪涌电流IFSM:150A 最大…

使用java代码调用超融合登录接口,跟着敲就完事,官方文档也没有的资源~

一、准备工作 接口地址: 获取公钥:/vapi/json/public_key 登录:/vapi/json/access/ticket 登陆接口和 API 调用说明: 这部分步骤均为官网文档,最后步骤则是本地测试用户列表接口 1、第一步:获取公钥 注意&…

Echarts自定义柱状图

目录 效果图 echarts官网找相似图 将柱状图引入html页面中 自定义柱状图 将不需要的属性删除 ​编辑 修改图形大小 grid 不显示x轴 ​编辑 不显示y轴线和相关刻度 ​编辑 y轴文字的颜色设置为自己想要的颜色 修改第一组柱子相关样式(条状) …

Richard Stallman 正在与癌症作战

导读为了纪念 GNU 项目成立 40 周年,自由软件基金会(FSF)已计划在 10 月 1 日(即GNU 40)为家庭、学生以及美国的其他人群组织一场黑客马拉松活动。 活动之前,GNU 项目于 9 月 27 日迎来了 40 岁生日&#…

GraalVM入门教程

GraalVM入门教程 GraalVM是什么几个名词介绍native-imagegu 基础环境搭建linux下载GraalVM配置环境变量下载安装AOT编译器 native-image安装gcc、glibc-devel 与 zlib-devel下载maven并配置环境变量 windows下载GraalVM配置环境变量下载安装AOT编译器 native-image下载配置wind…

阿里云服务器的购买方式有哪些?哪些实例规格的云服务器价格相对便宜一点?

对于还没购买过阿里云服务器的用户来说,如何购买阿里云服务器以及现在购买哪些实例规格的云服务器价格比较便宜是用户比较关心的,购买阿里云服务器的方式主要有四种,而目前价格比较便宜的云服务器实例规格有轻量应用服务器和和经济型、通用算…

【ROS 2 基础-常用工具】-6 Rviz基础使用

所有内容请查看:博客学习目录_Howe_xixi的博客-CSDN博客

图形学--shading着色

概念:对不同物体应用不同材质 llumination shading着色 Blinn-Phong reflectance model Diffuse Reflection 漫反射 光打到了shading point上然后光线四面八方均匀散射 光源会根据光源传播的距离进行一定的能量衰减 按球的表面积来算,吸收的能量和光…

分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测

分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测 目录 分类预测 | Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现WOA-GRU鲸鱼算法优化门控循环单元的数据多输入…

Gradio的重要函数以及一些代码示例学习(一)

1 重要函数解析 1.1 Interface()类 参考: interface 最常用的基础模块构成。 应用界面:gr.Interface(简易场景), gr.Blocks(定制化场景)输入输出:gr.Image(图像), gr.Textbox(文本框), gr.DataFrame(数据框), gr.Dropdown(下拉选项), gr.…

AI-新人类电商人的AI课,用世界先进的AI帮助电商降本增效

课程下载:https://download.csdn.net/download/m0_66047725/88448518 比如用语言模型写短视频文案、脚本,用生图模型做场景、拍摄、换装,用数字人做直播短视频 AI电商课程目录 注意:由于AI发展太快,新内容可能不在…

如何提升多个微信个人号管理效率?

一、管理多个微信个人号 微信扫码即可登录到系统,支持登录多个账号,可以聚合聊天,设置快捷回复语,提高回复的效率,不用来回切换界面,减少封号的风险。 二、监管管理多个账号 微信登陆在系统,所…

ECharta雷达图 样式调整

预期效果&#xff1a; <template><div id"operationalRisk-radar-chart" class"h-290 w-385"></div> </template><script>export default {name: radarChart} </script> <script setup>import { onMounted, r…

机器学习(24)---AdaBoost(课堂笔记)

文章目录 一、知识记录二、题目2.1 题目12.2 题目22.3 答案书写 一、知识记录 二、题目 2.1 题目1 2.2 题目2 2.3 答案书写

网络编程开发及实战(上)

一、什么是互联网 一、什么是互联网 1、计算机网络的定义 2、计算机的分类 1&#xff09;按照作用范围分类 个人局域网&#xff1a;热点 2&#xff09;按照网络的使用者分类 公用网&#xff1a;缴费可以使用的网 专用网&#xff1a;军队 3、网络的网络 由节点和链组成 互…

(七)QVTKOpenGLNativeWidget中显示坐标轴

为了方便观察图像的方向&#xff0c;位置以及旋转情况&#xff0c;想在窗口中添加一个坐标轴显示&#xff0c;并且这个坐标轴是随着窗口的旋转变动的&#xff0c;在网上找了很多例子&#xff0c;但是最后就是不显示坐标轴。 在此记录一下。 一、坐标轴相关类简单介绍 1.vtkA…