java面试一日一题:讲下redo log
问题:请讲下redo log的作用
分析:mysql中有很多日志,例,binlog undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题?
回答要点:
主要从以下几点去考虑
1、redo log产生的背景;
2、redo log的作用;
3、为什么redo log比binlog要快;
在mysql中,一个事务的提交需要将对数据的修改更新到磁盘上,目的是为了做到数据的持久化,防止数据丢失,比如,update t1 set age='24' where name = 'tom',将name为tom的age修改为24,执行该语句并提交事务后需要将修改更新到磁盘,更新到磁盘的简化路径是:用户空间缓冲区-->OS缓冲区-->磁盘,如果使用了零拷贝技术则可以由用户空间缓冲区直接到磁盘,mysql应该未使用,暂时不谈。需要特别注意的一点是写入磁盘使用的是随机写入,为什么是随机写入那,因为name为tom的数据在磁盘中什么地方是未知的,这时就需要移动磁盘的磁头进行寻道等操作,这些操作是很费时的,相对于操作内存来说对硬盘的操作是很慢的,如果每次提交都要进行这种随机操作那么必然会带来性能上的损失,那么可以不必每次都进行磁盘的写入吗,答案是可以的,比如设置定时每隔多少秒写一次磁盘,把对数据的修改更新到磁盘上,这看似是一个完美的解决方案,但是会带来一个问题,即如果在要写磁盘前mysql崩掉了,岂不是会丢失很多数据。没错,需要有另外的解决方案,那就是redo log
redo log的作用就是暂时保存未写入磁盘的数据,redo log包含两部分,分别是redo log buffer和redo log file,redo log buffer就是每次要写redo log file的时候先写入redo log buffer,然后再写入redo log file,为什么redo log可以解决上面的数据丢失的问题,关键的一点在于在写redo log file的时候是顺序写。何为顺序写,可以简单理解为数据是依次写入,不用每次写入都移动磁头和寻道,这会节省很多时间,这就是引入redo log的好处,由于redo log是顺序写会节省很多时间,同时再定时把redo log中的内容更新到磁盘中。

java面试一日一题:讲下redo log的更多相关文章
- java面试一日一题:讲下mysql中的undolog
问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...
- java面试一日一题:讲下在什么情况下会发生类加载
问题:请讲下在什么情况下会发生类加载? 分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载? 回答要点: 主要从以下几点去考虑 1.什么是类加载: 2 ...
- java面试一日一题:mysql中常用的存储引擎有哪些?
问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...
- java面试一日一题:java中垃圾回收算法有哪些
问题:请讲下在java中有哪些垃圾回收算法 分析:该问题主要考察对java中垃圾回收的算法以及使用场景 回答要点: 主要从以下几点去考虑, 1.GC回收算法有哪些 2.每种算法的使用场景 3.基于垃圾 ...
- java面试一日一题:java中的垃圾回收器
问题:请讲下java中垃圾回收器有哪些? 分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器 回答要点: 主要从以下几点去考虑, 1.垃圾回收器的种类 2.每种垃圾回收器的着重点是什么 前边的 ...
- java面试一日一题:请讲下对mysql的理解
问题:请讲下对mysql的理解 分析:该问题主要考察对mysql的理解,基本概念及sql的执行流程 回答要点: 主要从以下几点去考虑, 1.mysql的整体架构? 2.mysql中每一个组件的作用? ...
- java面试一日一题:讲下mysql中的索引
问题:请讲下mysql中的索引 分析:mysql中有很多索引,要对对这些索引有所掌握,还要弄清楚每种索引的本质? 回答要点: 主要从以下几点去考虑 1.索引的本质是什么 2.mysql的索引分类: 3 ...
- java面试一日一题:讲对mysql的MVCC的理解
问题:请讲下对mysql中MVCC的理解 分析:这个问题要回答的是对MVCC的理解,以及MVCC解决了什么问题这几个方面入手. 回答要点: 主要从以下几点去考虑, 1.什么是MVCC? 2.MVCC用 ...
- java面试一日一题:java线程池
问题:请讲下java中的线程池 分析:在面试中经常问到线程池的问题,要掌握其基本概念,使用方法,注意事项等,引申下tomcat中默认的线程数是多少 回答要点: 主要从以下几点去考虑, 1.为什么要使用 ...
随机推荐
- MySQL注入与informantion_schema库
目录 只可读 自动开启 和MySQL注入有关的3个表 手动注入的使用案例 表介绍 查询一个表中全部字段的过程 MySQL V5.0安装完成会默认会生成一个库(informantion_schema), ...
- HDOJ-1043 Eight(八数码问题+双向bfs+高效记录路径+康拓展开)
bfs搜索加记录路径 HDOJ-1043 主要思路就是使用双向广度优先搜索,找最短路径.然后记录路径,找到结果是打印出来. 使用康拓序列来来实现状态的映射. 打印路径推荐使用vector最后需要使用a ...
- Lua生成Guid(uuid)
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) .GUID是一种由算法生成的二进制长度为 ...
- 记录一个在配置虚拟环境是遇到的错误(virtualenv)
原配置文件 export WORKON_HOME=~/Envs #设置virtualenv的统一管理目录 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no- ...
- Django常见问题集锦
1. 解决pycharm终端/cmd运行python脚本报错"ImportError/ModuleNotFoundError:No Module named ..." 问题 项目结 ...
- Linux目录,rpm及top,vi命令简记
一次简单的Linux常用操作记录 一.一些Linux目录结构 /bin 存放二进制可执行文件(ls.cat.mkdir等),一些常用的命令一般都在这里. /etc 存放系统管理和配置文件 /home ...
- Windows下的Linux子系统
强调!!!必须是Windows专业版!!! 一.安装运行过程 第一步:打开开发人员模式 第二步:进入 '控制面板 '--'程序'--'启用的Windows功能'--勾选Linux子系统(根据提示进行重 ...
- 远程文件管理系统(SpringBoot + Vue)
一.简介 可以实现对本地文件的 增.删.改.重命名等操作的监控,通过登录远程文件监控系统,获取一段时间内本地文件的变化情况. 系统功能图如下: 流程图如下: 二.本地文件监控程序的实现(C++) 调用 ...
- 2019 南京网络赛 B super_log 【递归欧拉降幂】
一.题目 super_log 二.分析 公式很好推出来,就是$$a^{a^{a^{a^{...}}}}$$一共是$b$个$a$. 对于上式,由于指数太大,需要降幂,这里需要用到扩展欧拉定理: 用这个定 ...
- 使用 Kubernetes 扩展专用游戏服务器
系列 探索使用 Kubernetes 扩展专用游戏服务器:第 1 部分-容器化和部署 探索使用 Kubernetes 扩展专用游戏服务器:第 2 部分-管理 CPU 和内存 探索使用 Kubernet ...