当前位置: 首页 > news >正文

数据库的四个特性?MySQL是如何实现的?

首先MySQL中,数据库的四个特性分为:

  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性

也就是我们常说的ACID。

那么这四个特性数据库是如何实现的呢?

持久性---> redo log:

redo log(重做日志):
redolog本身是一种日志,记录的是事务提交时对数据页(MySQL在硬盘中存储数据文件的最小单位,由数据行组成)的物理修改日志。每当事务对数据页发生改动,redolog都会记录。当服务宕机可用来同步数据。

原子性&一致性---> undo log:

undo log(回滚日志):
用于记录数据被修改之前的信息,注意是逆向记录,主要是为了回滚操作,这也被我们成为逻辑日志。
比如我们delete一条记录,undo log会写入一条insert。

隔离性---->锁&MVCC:

事务的隔离性是由锁和mvcc实现的。
其中mvcc的意思是多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突,它的底层实现主要是分为了三个部分。
第一个是 隐藏字段,第二个是 undo log日志,第三个是 readView读视图
  1. 隐藏字段:在mysql中给每个表都设置了隐藏字段,有一个是trx_id(事务id),记录每一次操作的事务id,是自增的;另一个字段是roll_pointer(回滚指针),指向上一个版本的事务版本记录地址。
  2. undo log:记录回滚日志,存储老版本数据,在内部会形成一个版本链,在多个事务并行操作某一行记录,记录不同事务修改数据的版本,通过roll_pointer指针形成一个链表。
  3. readView:解决的是一个事务查询选择版本的问题,在内部定义了一些匹配规则和当前的一些事务id判断该访问那个版本的数据,不同的隔离级别快照读是不一样的,最终的访问的结果不一样。如果是读已提交,每一次执行快照读时生成ReadView,如果是可重复读仅在事务中第一次执行快照读时生成ReadView,后续复用

相关文章:

数据库的四个特性?MySQL是如何实现的?

首先MySQL中,数据库的四个特性分为: 原子性一致性隔离性持久性 也就是我们常说的ACID。 那么这四个特性数据库是如何实现的呢? 持久性---> redo log: redo log(重做日志): redolog本身是…...

Jupyter R绘图 汉字显示乱码的解决办法

1.Jupyte中,R绘图,汉字显示乱码 2.如何解决? (1)R中安装showtext 登录linux服务器 #R > install.packages(“showtext”) … 出错 (2)退出R,安装freetype-config #apt install libfreetype6-dev 出错 (3)进入R&…...

推荐几个值得一读的Qt开源项目

VNote - 基于Qt的免费开源笔记软件,适合那些寻找跨平台笔记解决方案的用户。项目地址:https://github.com/vnotex/vnote Qt NodeEditor - 类似于UE4蓝图的节点编辑器,对于想要深入了解Qt图形编辑和节点系统的人来说,这是一个极好…...

【XR806开发板试用】使用PWM模块模拟手机呼吸灯提示功能

一般情况下,我们的手机在息屏状态,当收到消息处于未读状态时,会有呼吸灯提醒,这次有幸抽中XR806开发板的试用,经过九牛二虎之力终于将环境搞好了,中间遇到各种问题,在我的另一篇文章中已详细描述…...

Mysql——索引下推

MySQL的索引下推(Index Condition Pushdown, ICP)是一种查询优化技术,它允许MySQL在存储引擎层执行部分WHERE子句中的过滤条件,而非全部在MySQL服务器层执行。这使得在扫描索引过程中就可以剔除不满足条件的记录,从而减…...

Springboot项目之mybatis-plus多容器分布式部署id重复问题之源码解析

mybatis-plus 3.3.2 部署多个pod id冲突问题 配置: # 设置随机 mybatis-plus.global-config.worker-id: ${random.int(1,31)} mybatis-plus.global-config.datacenter-id: ${random.int(1,31)}源码解析:MybatisSqlSessionFactoryBean 重点&#xff1a…...

微信答题小程序云开发--实现云函数上传题目图片 base64功能

需求功能 题目带有图片,需要支持上传图片功能。微信答题小程序云开发,实现云函数上传题目图片、存储功能、查询显示等功能。 云函数开发遇到的问题 在微信云开发环境当中,普通的用户并没有往云存储内写入文件的权限。 所以普通用户想要使用…...

学会Sass的高级用法,减少样式冗余

在当今的前端开发领域,样式表语言的进步已经显著提升了代码组织性和可维护性。Sass(Syntactically Awesome Style Sheets)作为CSS预处理器的翘楚,以其强大的变量、嵌套规则、混合宏(mixin)、循环和函数等高…...

【Java初阶(五)】类和对象

❣博主主页: 33的博客❣ ▶文章专栏分类: Java从入门到精通◀ 🚚我的代码仓库: 33的代码仓库🚚 目录 1. 前言2.面向对象的认识3.类的认识4. 类的实例化4.1什么是实例化4.2类和对象的说明 5.this引用6.对象初始化6.1 构造方法 7.static关键字8.代码块8.1 …...

AWTK-MODBUS 服务器

AWTK-MODBUS 服务器 1. 介绍 AWTK-MODBUS 提供了一个简单的 MODBUS 服务器,可以通过配置文件来定义寄存器和位的数量和初始值。 启动方法: bin/modbus_server_ex config/default.json2. 配置文件 配置文件使用JSON格式。 url: 连接地址auto_inc_in…...

JavaScript快速入门笔记之一(基本概念)

JavaScript快速入门笔记之一(基本概念) 前端三大语言: HTML:专门编写网页内容的语言CSS:专门美化网页样式的语言JavaScript:专门编写网页交互的语言 名词解释: 交互:输入数据&#…...

前端学习之css基本网格布局

网格布局 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>网格布局</title><style>.a{/* grid网格布局 */display: grid;width: 400px;height: 400px;border: 1px solid red;/* 设置当前…...

[网鼎杯2018]Unfinish 两种方法 -----不会编程的崽

网鼎杯太喜欢搞二次注入了吧。上次是无列名盲注&#xff0c;这次又是二次注入盲注。。。不知道方法还是挺难的。哎&#xff0c;网鼎嘛&#xff0c;能理解透彻就很强了。能自己做出来那可太nb了。 又是熟悉的登录框。不知道这是第几次看见网鼎杯的登录框了。后台扫描一下&#x…...

安防监控视频汇聚平台EasyCVR在银河麒麟V10系统中的启动异常及解决方法

安防监控视频平台EasyCVR具备较强的兼容性&#xff0c;它可以支持国标GB28181、RTSP/Onvif、RTMP&#xff0c;以及厂家的私有协议与SDK&#xff0c;如&#xff1a;海康ehome、海康sdk、大华sdk、宇视sdk、华为sdk、萤石云sdk、乐橙sdk等。平台兼容性强&#xff0c;支持Windows系…...

了解云原生

声明&#xff1a;内容来自AI&#xff0c;未经验证&#xff0c;仅供参考! 1、云原生学习路线 学习云原生(Cloud Native)技术涉及了解和掌握一系列的概念、技术和工具。云原生是一种构建和运行应用程序的方法&#xff0c;旨在充分利用云计算的灵活性、可伸缩性和弹性。以下是一…...

【go从入门到精通】for和for range的区别

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…...

【C语言】【Leetcode】88. 合并两个有序数组

文章目录 一、题目二、思路再思考 一、题目 链接: link 二、思路 这题属于简单题&#xff0c;比较粗暴的做法就是直接比较两个数组&#xff0c;先把第二个数组加到第一个的后面&#xff0c;如何冒泡排序&#xff0c;这种方法简单粗暴但有效&#xff0c;可是不适用于这题&…...

DMA控制器

前言 大家好&#xff0c;我是jiantaoyab&#xff0c;这是我作为学习笔记的25篇&#xff0c;本篇文章给大家介绍DMA。 无论 I/O 速度如何提升&#xff0c;比起 CPU&#xff0c;总还是太慢。如果我们对于 I/O 的操作&#xff0c;都是由 CPU 发出对应的指令&#xff0c;然后等待…...

SQLiteC/C++接口详细介绍sqlite3_stmt类(十)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;九&#xff09; 下一篇&#xff1a; SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;十一&#xff09; 38、sqlite3_column_value sqlite3_column_valu…...

Android 生成Excel文件保存到本地

本文用来记录在安卓中生成Excel文件并保存到本地操作&#xff0c;在网上找了好久&#xff0c;终于找到一个可以用的&#xff0c;虽然代码已经很老的&#xff0c;但亲测可用&#xff01; 项目地址&#xff1a;https://github.com/wanganan/AndroidExcel 可以下载下来修改直接用…...

Hermes Agent(爱马仕agent )爆火背后的技术解析

基于对现有技术资料的分析&#xff0c;Hermes Agent 的火爆及其与 OpenClaw 的对比&#xff0c;可以从以下几个核心维度进行解构与推演。 一、 Hermes Agent 项目详细分析与火爆原因 Hermes Agent 是一个由 Nous Research 开发的 AI Agent 框架&#xff0c;其设计哲学偏向于构…...

为什么92%的AI生成BP被秒拒?ChatGPT商业计划书写作的5大合规红线,今天不看明天就踩坑

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;AI商业计划书被秒拒的底层逻辑真相 投资人不是拒绝AI&#xff0c;而是拒绝“伪AI叙事”。当一份计划书开篇即堆砌“大模型”“AIGC”“多模态融合”等术语&#xff0c;却未定义清晰的用户痛点、可验证的最小闭…...

Linux端口敲门原理与knockd实战部署指南

1. 端口敲门不是玄学&#xff0c;是可控的“隐形门铃”很多人第一次听说“SSH端口敲门”&#xff0c;第一反应是&#xff1a;这玩意儿是不是给服务器加了一把看不见的锁&#xff1f;听起来很酷&#xff0c;但真用起来会不会像在黑盒里调音——敲对了门开&#xff0c;敲错了直接…...

【审计专栏】【财务领域】第二十八篇 全球/中国货币流动中离钱最近的岗位01

全球/中国货币流动和流入/流出最近的距离相关信息,特别关注“离钱最近的岗位”,按照指定表格格式输出如下: 编号 类型 国家 省/市/区县 行业 公司类型 岗位类型【含管理岗/基层岗位】 离货币收入/投放的距离指标和偏差指数和期望/方差 指标类型 模型逐步推理思考的…...

漏洞研究工作流:从CVE追踪到实战提升的闭环方法论

1. 这不是“资源列表”&#xff0c;而是一套可落地的漏洞研究工作流很多人一看到“在线资源全攻略”就下意识点开收藏&#xff0c;然后扔进浏览器书签夹吃灰。我见过太多安全从业者——包括刚入行的蓝队新人、想补实战短板的渗透测试员、甚至部分做红队支撑的工程师——把CVE编…...

昇腾CANN ops-transformer FlashAttention 反向传播:不存 Attention 矩阵怎么求梯度

FlashAttention 前向传播的精髓&#xff1a;不存 NN 的 attention 矩阵&#xff0c;只存 O(N) 的输出和 softmax 归一化因子。反向传播时&#xff0c;需要 attention 矩阵来计算梯度——但矩阵没存。解法&#xff1a;重新算一遍。用额外的计算换显存——这是典型的 compute-for…...

如何构建企业级自动化预约系统:架构设计与工程实践

如何构建企业级自动化预约系统&#xff1a;架构设计与工程实践 【免费下载链接】campus-imaotai i茅台app自动预约&#xff0c;每日自动预约&#xff0c;支持docker一键部署&#xff08;本项目不提供成品&#xff0c;使用的是已淘汰的算法&#xff09; 项目地址: https://git…...

不变性假设下的PAC学习:从VC维到不变性VC维的样本效率提升

1. 项目概述&#xff1a;不变性假设下的PAC学习理论在机器学习领域&#xff0c;我们经常希望模型不仅能拟合训练数据&#xff0c;更能捕捉数据背后的本质规律&#xff0c;从而对未见过的数据做出可靠预测。PAC&#xff08;Probably Approximately Correct&#xff09;学习理论为…...

多保真度机器学习加速卟啉-粘土体系激子动力学模拟

1. 项目概述&#xff1a;当机器学习遇见量子化学&#xff0c;破解卟啉-粘土体系能量转移之谜在人工光合作用和下一代太阳能电池材料的研发前沿&#xff0c;科学家们一直致力于模仿自然界的高效光捕获系统。想象一下&#xff0c;植物和某些细菌中的叶绿素分子&#xff0c;能够近…...

终极跨平台游戏资源管理器:VPKEdit完全指南

终极跨平台游戏资源管理器&#xff1a;VPKEdit完全指南 【免费下载链接】VPKEdit A CLI/GUI tool to create, read, and write several pack file formats. 项目地址: https://gitcode.com/gh_mirrors/vp/VPKEdit 你是否曾经为处理Source引擎游戏资源而烦恼&#xff1f;…...