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

mysql ACID 原理

序言:ACID 是一组数据库设计原则,他是业务数据和关键业务程序的可靠性保障。

1、atomicity(原子性)

依赖如下能力

autocommit
commit 
rollback

2、一致性

2.1 double write buffer
1、定义:double write buffer 是一块空间,mysql 将缓冲池的数据写入到此空间,然后 flush 到 mysql 数据存储空间。当 mysql 发生异常退出时,会从这个空间恢复数据。
2、可能问题:double write buffer 会造成两倍磁盘IO 吗?
不会,写入double write buffer 使用OS 调用 fsync()方法,每次写入一块大的 chunk 数据。(顺序 IO)
2.2 crash recovery

mysql 异常恢复分为如下几步进行

2.2.1 tablespace discovery
mysql 启动时会扫描tablespace空间,看是否有表需要 recovery。
2.2.1 redo log application

重要知识:checkpoint(检查点) 是 redo log 管理的核心机制之一。它的核心作用是 标记哪些数据修改已经持久化到磁盘,从而优化崩溃恢复的效率并回收 redo log 空间

1、redo log 存储方式:redo log,存储物理日志 记录数据页的变化(即第几页第几行变动),用于 mysql 程序异常退出后恢复。
redo log 在磁盘中是一系列文件,在事务成功提交并且写入后会被清理,此空间会重复使用
2、redo log 的写入:写入 redo log buffer,默认事务提交时强制刷盘 innodb_flush_log_at_trx_commit。(可每秒刷盘 0 ,OS 异步刷盘)

在这里插入图片描述

2.2.2 回滚未提交事务
2.2.3 change buffer merge
redo log 中会存储buffer pool 和 change buffer 中的数据,在 redo log 重放时,会根据 checkpoint 位置恢复对应的 change buffer
2.2.4 purge
清除被标记删除的,并且在所有事务中不可见的数据。

相关文章:

  • MySQL各种日志类型介绍
  • 【数据插入最大值后】2022-2-2
  • Redis | 缓存技术对后端的重要性
  • Hive 分桶(Bucketing)深度解析:原理、实战与核心概念对比
  • Hive 分区详解:从基础概念到实战应用
  • “轩辕杯“云盾砺剑CTF挑战赛 Web wp
  • 大模型应用开发第一讲:AI Agent定义
  • Language Model
  • 小白场成长之路-计算机网络(三)
  • 课上实验111111
  • rocky linux-系统基本管理
  • Netty学习专栏(五):Netty高性能揭秘(Reactor模式与零拷贝的深度实践)
  • 高能效比服务器
  • 热门大型语言模型(LLM)应用开发框架
  • FFmpeg 4.3 H265 二十二.2,在网络环境RTSP中,断线下如何处理
  • Prompt Engineering 提示工程介绍与使用/调试技巧
  • 深度解析新能源汽车结构与工作原理
  • MySQL的日志和备份
  • 像造汽车一样造房子:装配式建筑4.0如何重塑未来人居
  • Three.js搭建小米SU7三维汽车实战(5)su7登场
  • 临沂经开区建设局网站/百度模拟点击软件判刑了
  • vi设计百度百科/百度seo关键词优化软件
  • 网站建设明细报价单/福建百度代理公司
  • ps网站子页怎么做的/如何提高搜索引擎优化
  • 个人可以采集视频做网站吗/电商营销的策略与方法
  • 做网站业务员应该了解什么/房产网站建设