java面试一日一题:binlog undolog redolog的区别
问题:请讲下mysql中binlog、undolog、redolog三种日志的区别
分析:mysql中这三种日志很常见,也是面试中涉及比较多的方面,要理解清楚这三种日志的定位及区别;
回答要点:
主要从以下几点去考虑
1、三种日志的作用分别是什么;
2、三种日志解决的问题;
3、三种日志分别是什么时间写入的;
bin log、redo log、undo log三种日志属于不同级别的日志,按照mysql的划分可以分为服务层和引擎层两大层,bin log是在服务层实现的;redo log、undo log是在引擎层实现的,且是innodb引擎独有的,主要和事务相关。
bin log
bin log中记录的是整个mysql数据库的操作内容,对所有的引擎都适用,包括执行的DDL、DML,可以用来进行数据库的恢复及复制。bin log有三种形式:statement、row、mixed,statement是基于语句的,也就是执行的sql语句,该种形式的文件比较小,例,update t1 set age='24' where name like '%王%',这样一条语句,在statement下就会记录这样一条sql;row是基于数据行的,会记录变化的所有数据,一般文件较大。例,update t1 set age='24' where name like '%王%',这条语句,在row的形式下,则会记录该条sql影响的所有数据记录;mixed是混合格式,是statement和row的组合;
redo log
redo log中记录的是要更新的数据,比如一条数据已提交成功,并不会立即同步到磁盘,而是先记录到redo log中,等待合适的时机再刷盘,为了实现事务的持久性
undo log
undo log中记录的是当前操作中的相反操作,一条insert语句在undo log中会对应一条delete语句,update语句会在undo log中对应相反的update语句,在事务回滚时会用到undo log,实现事务的原子性,同时会用在MVCC中,undo中会有一条记录的多个版本,用在快照读中;
上面大体讲了三种日志的作用及背景和解决的问题,有个问题一直困扰着我,那就是在执行一条sql时,这三种日志是什么时间写入的。
首先,一个事务刚开始,为了防止事务提交前回滚,要先写入undo log,只有写入了undo log才有可能实现回滚,又由于可能出现回滚所以开始写入的只有undo log;
其次,在写入undo log后,要写入redo log中,这里的redo log指的是redo log buffer,而不是redo log file,至于什么时候redo log buffer中的内容会刷到磁盘mysql提供了一个配置参数innodb_flush_log_at_trx_commit,该参数有0 1 2三种取值,;
最后,写入了redo log后,事务会处于prepare阶段,这时会告诉执行器随时都可以提交事务,执行器便会生成binlog日志,并写入磁盘,调用innodb的事务提交接口,进行事务提交,prepare状态的redo log也会进入commit状态,
java面试一日一题:binlog undolog redolog的区别的更多相关文章
- java面试一日一题:讲下mysql中的undolog
问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...
- java面试一日一题:mysql中常用的存储引擎有哪些?
问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...
- java面试一日一题:讲下在什么情况下会发生类加载
问题:请讲下在什么情况下会发生类加载? 分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载? 回答要点: 主要从以下几点去考虑 1.什么是类加载: 2 ...
- java面试一日一题:java中垃圾回收算法有哪些
问题:请讲下在java中有哪些垃圾回收算法 分析:该问题主要考察对java中垃圾回收的算法以及使用场景 回答要点: 主要从以下几点去考虑, 1.GC回收算法有哪些 2.每种算法的使用场景 3.基于垃圾 ...
- java面试一日一题:java中的垃圾回收器
问题:请讲下java中垃圾回收器有哪些? 分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器 回答要点: 主要从以下几点去考虑, 1.垃圾回收器的种类 2.每种垃圾回收器的着重点是什么 前边的 ...
- java面试一日一题:java线程池
问题:请讲下java中的线程池 分析:在面试中经常问到线程池的问题,要掌握其基本概念,使用方法,注意事项等,引申下tomcat中默认的线程数是多少 回答要点: 主要从以下几点去考虑, 1.为什么要使用 ...
- java面试一日一题:rabbitMQ的工作模式
问题:请讲下rabbitMQ的工作模式 分析:该问题纯属概念题,需要掌握rabbtiMQ的基础知识,同时该题也是切入MQ的一个引子: 回答要点: 主要从以下几点去考虑, 1.rabbitMQ的基本概念 ...
- java面试一日一题:mysql事务是如何实现的
问题:请讲下mysql的事务是如何实现的 分析:该问题主要考察对事务的理解及实现方式: 回答要点: 主要从以下几点去考虑, 1.对事务的概念的理解? 2.事务的实现方式? 讲到mysql的事务,很快可 ...
- java面试一日一题:讲对mysql的MVCC的理解
问题:请讲下对mysql中MVCC的理解 分析:这个问题要回答的是对MVCC的理解,以及MVCC解决了什么问题这几个方面入手. 回答要点: 主要从以下几点去考虑, 1.什么是MVCC? 2.MVCC用 ...
随机推荐
- Gitlab与Sonarqube整合-代码提交自动检测
目录 概述 准备工作 postgres sonarqube gitlab gitlab-runner Gitlab-runner容器 注册Gitlab-runner Sonarqube gitlab ...
- 后端程序员之路 28、一个轻量级HTTP Server的实现
提到http server,一般用到的都是Apache和nginx这样的成熟软件,但是,有的情况下,我们也许也会用一些非常轻量级的http server.http server的c++轻量级实现里,M ...
- 大话Spark(6)-源码之SparkContext原理剖析
SparkContext是整个spark程序通往集群的唯一通道,他是程序的起点,也是程序的终点. 我们的每一个spark个程序都需要先创建SparkContext,接着调用SparkContext的方 ...
- [转载]Android MVC,MVP和MVVM 思想&例子
在Android开发中,常采用 MVC(Model-View-Controller)或者MVP(Model-View-Presenter) 等框架模式.设计如图 mvc mvp 可以看出,在 MV ...
- AJAX 相关参数详细说明
最近ajax的使用十分频繁,对其许多参数还不是很了解,特此总结. 通用写法 1 $.ajax({ 2 url: "http://www.hzhuti.com", //请求的url地 ...
- Mybatis系列全解(八):Mybatis的9大动态SQL标签你知道几个?提前致女神!
封面:洛小汐 作者:潘潘 2021年,仰望天空,脚踏实地. 这算是春节后首篇 Mybatis 文了~ 跨了个年感觉写了有半个世纪 ... 借着女神节 ヾ(◍°∇°◍)ノ゙ 提前祝男神女神们越靓越富越嗨 ...
- Java 读取Word文本框中的文本/图片/表格
Word可插入文本框,文本框中可嵌入文本.图片.表格等内容.对文档中的已有文本框,也可以读取其中的内容.本文以Java程序代码来展示如何读取文本框,包括读取文本框中的文本.图片以及表格等. [程序环境 ...
- windows电脑上传ipa到appstore的详细流程
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布. 但是在苹果开发者中心无法直接上传ipa文件,它要求我们使用xcode或transpo ...
- FreeBSD 镜像站问题 @2021
主要问题在于官方无论如何也不开放 rsync 且不接受镜像站的官方二级镜像申请. 多次联系均无二次联系,如邮件列表,大概五次,其中三次回应,两次无回应.其主要回复内容为"深表歉意,但台湾地区 ...
- Kotlin/Java Base64编码和解码(图片、文件)
原文: Kotlin/Java Base64编码和解码(图片.文件) | Stars-One的杂货小窝 最近在项目中使用到了Base64编码和解码,便是稍微写篇文章记录一下 PS:本文代码都是使用Ko ...