事务的特性——持久性(实现原理)
事务的特性——持久性(实现原理)
InnoDB读写数据原理
磁盘的IO操作所需要花费的成本十分巨大,因此InnoDB在解决这一问题的时候提供了Buffer Pool作为访问数据库数据的缓冲。Buffer Pool位于内存当中,其包含了磁盘中部分数据页的映射。
当需要读取数据的时候,InnoDB会首先尝试从Buffer Pool中读取,如果读取不到才会从磁盘读取并放入到Buffer Pool中。
当写入数据的时候,会先写入Buffer Pool页面,并将这样的页面标记为脏页,这些修改过的数据页在之后的某个时刻会被刷新到磁盘中。
这样设计的好处是可以把大量的磁盘I/O转成内存读写,并且把对一个页面的多次修改merge成一次I/O操作(刷脏一次刷入整个页面),避免每次读写操作都访问磁盘,从而大大提升了数据库的性能。
持久性
持久性是事务的保证,事务终结的标志(内存的数据持久到硬盘文件中)。在一个事务提交之后,事务的状态就会被持久化到数据库中,对数据的更新、新增等操作将会持久化到数据库中。
问题: Buffer Pool 是在内存的,是易失性的,如果一个事务提交了事务后,MySQL突然宕机,且此时Buffer Pool中修改的数据还没有刷新到磁盘中的话,就会导致数据的丢失。
解决方案:引入redo log当数据修改时,InnoDB除了修改Buffer Pool中的数据,还会在redo log 记录这次操作,并保证redo log早于对应的页面落盘,也就是常说的WAL。若MySQL突然挂掉且还没有把数据写入磁盘,重启后,MySQL会通过已经写入磁盘的redo log来恢复没有被刷新到磁盘的数据页。
事务的特性——持久性(实现原理)相关推荐
- 事务四大特性及实现原理
事务的特点(ACID): 原子性:要么全部成功,要么全部失败 一致性:事务的执行结果必须使数据库从一个一致性状态到另一个一致性状态.一致性状态是指:1.系统状态满足数据的完整性的约束:2.系统的状态反 ...
- mysql数据库事务四大特性的实现原理
事务的四大特性 原子性.一致性.隔离性.持久性 原子性实现 原子性保证事务要么全执行成功,要么全不执行. mysql使用回滚机制实现,undo log实现回滚. 事务执行 insert.update. ...
- mysql 事物的持久性是指_详解MySQL中事务的持久性实现原理
前言 说到数据库事务,大家脑子里一定很容易蹦出一堆事务的相关知识,如事务的ACID特性,隔离级别,解决的问题(脏读,不可重复读,幻读)等等,但是可能很少有人真正的清楚事务的这些特性又是怎么实现的,为什 ...
- 事务的4大特性及实现原理
文章目录 事务及其特性 一致性 原子性 隔离性 持久性 并发事务控制 单版本控制-锁 多版本控制-MVCC 实现原理 原子性实现原理 持久性实现原理 隔离性实现原理 一致性实现原理 常见面试题 为什么 ...
- 详述MySQL事务及ACID特性的实现原理
" 事务是 MySQL 等关系型数据库区别于 NoSQL 的重要方面,是保证数据一致性的重要手段. 本文将首先介绍 MySQL 事务相关的基础概念,然后介绍事务的 ACID 特性,并分析其实 ...
- ACID特性的实现原理与MySQL事务的关系
深入学习MySQL事务:ACID特性的实现原理 事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID ...
- 事务的四大特性及实现原理
事务的四大特性及实现原理 1.原子性(Atomicity) 不可再分,事务的最小单位.在一个事务中,我们对数据库的操作,要么都成功,要么都失败,不可能出现部分成功或部分失败的情况.若操作失败必须回滚. ...
- 深入学习MySQL事务:ACID特性的实现原理
事务是MySQL等关系型数据库区别于NoSQL的重要方面,是保证数据一致性的重要手段.本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理. MySQL博大精深,文 ...
- 【概念原理】四种SQL事务隔离级别和事务ACID特性
2019独角兽企业重金招聘Python工程师标准>>> 事务是一组读写操作,并且具有只有所有操作都成功才算成功的特性. 事务隔离级别 SQL事务隔离级别由弱到强分别是:READ_UN ...
- 阿里P8架构师谈:分布式事务的解决方案,以及原理、总结
分布式事务是企业集成中的一个技术难点,也是每一个分布式系统架构中都会涉及到的一个东西,特别是在这几年越来越火的微服务架构中,几乎可以说是无法避免,本文就围绕分布式事务各方面与大家进行介绍. 事务 1. ...
最新文章
- Web开发之Goahead
- 子对象是什么java_面向对象编程(什么是对象)——java
- 2018.5.5信息安全铁人三项赛数据赛复现
- [javascript] Date 时间精确到天
- C#中的cookie编程
- Java 对象初始化过程
- 关于反射的完整 练习
- Effective Java之利用有限制通配符提升API的灵活性(二十八)
- 虚拟化解决方案 并不仅限于SDN
- 女员工有问题,责任在于头目不管事
- 【邮政编码识别】基于matlab灰度二值化邮政编码识别【含Matlab源码 788期】
- endl 和 cout
- 2022-01-06至10交易记录
- 考研复试之路:不努力怎敢轻易言弃
- 知乎:月薪2~3万,码农怎样度过一天
- 违反和解除劳动合同的经济补偿办法
- 唐朝诡事录之西行官宣
- 电商平台怎么解决税务问题?
- 详解 gRPC 客户端长连接机制实现
- Word2010入门