redo log 重做日志
--------------------------------------------------2015-02-10--------------------------------------------------
(为了节约写作时间,本文部分简称'重做日志'为'日志')
默认情况下, innodb存储引擎的数据目录下有两个文件,ib_logfile0和ib_logfile1. 这就是innodb存储引擎的日志文件了.也叫重做日志文件. 它们记录了innodb存储引擎的事务日志.
该日志文件用于保证innodb的数据完整性.
一.重做日志文件结构:
每一个innodb存储引擎至少有一组日志文件, 每组日志文件至少由2个文件组成.就像上面的所说的,ib_logfile0和ib_logfile1. innodb以循环写入的方式写入日志,例如先写ib_logfile0,当ib_logfile0被写满时,将接下来的内容写入ib_logfile1,当ib_logfile1被写满时又回到ib_0. 所以这两个(或n+1个)日志文件理论上说大小应该是保持一致的. 另外可同过参数innodb_mirrored_log_group参数(设置日志镜像)和innodb_log_group_home参数(设置日志文件组所在路径, './'为数据库数据目录下), 若将日志存放与不同的磁盘上,可提高innodb整体性能.
二. 重做日志与mysql二进制日志的区别:
1. 二进制日志会记录所有与mysql数据库有关的日志记录,包括,innodb,myisam, 等其他存储引擎的日志. 重做日志只记录innodb本身的事务日志.
2. 记录内容. 二进制日志记录的是一个事务的具体操作内容 . 重做日志记录的是关于每个页的更改的物理情况.
3. 写入时间: 二进制日志在每次事务commit时写入 .重做日志在事务进行中(commit之前)同样进行写入操作. 重做日志的操作并不是直接日入文件,而是先写入一个重做日志缓存中,然后按照一定顺序写入文件.(重做日志的写入过程). 重做日志是按512字节也就是一个扇区的大小,因为扇区是写入(磁盘)的最小单位,因为日志的写入必定是成功的.因此在重做日志的写入过程中不需要有两次写入(double write)
三 .重做日志写入条件 :
1. mysql 主线程(master thread)每秒/每10秒会将重做日志写入到文件,即使在事务中没有进行提交操作(commit).
2. innodb_flush_log_at_trx_commit 参数. 该参数有三个有效值. 分别为:
0 : 即当事务提交时(sql执行时,非commit操作),不将日志写入日志文件, 而只能由主线程进行每秒/每10秒的刷新. (这个值网上多文章解释为不写入日志文件).
1: 当事务提交时 ,重做日志缓同步到日志文件, 即伴有fsync操作.
2: 标识将重做日志异步刷新到磁盘, 即提交事务时,将日志内容写入到操作系统缓存. 稍后(具体不清楚)将系统缓存写入到日志文件中. 如果在日志记录并未写入到文件中,mysql 意外关闭,但操作系统正常运行. 当下次mysql启动时, 系统缓存中的日志内容仍然可用.如果操作系统挂了, 重做日志就没办法恢复了. 注:一般为了提升innodb的写入性能,可将innodb_flush_log_at_trx_commit设置为2.
--------------------------------------------------2015-02-10--------------------------------------------------
redo log 重做日志的更多相关文章
- redo log重做日志缓冲
---------------------------------- 2015-02-10---------------------------------- innodb redo log (重做日 ...
- 【REDO】删除REDO LOG重做日志组后需要手工删除对应的日志文件(转)
为保证重新创建的日志组成员可以成功创建,我们在删除日志组后需要手工删除对应的日志文件. 1.查看数据库当前REDO LOG日志相关信息1)查看日志组信息sys@ora10g> select * ...
- MySQL日志系统:redo log与binlog
日志系统主要有redo log(重做日志)和binlog(归档日志).redo log是InnoDB存储引擎层的日志,binlog是MySQL Server层记录的日志, 两者都是记录了某些操作的日志 ...
- 深入学习MySQL 02 日志系统:bin log,redo log,undo log
上一篇文章中,我们了解了一条查询语句的执行过程,按理说这篇应该讲一条更新语句的执行过程,但这个过程比较复杂,涉及到了好几个日志与事物,所以先梳理一下3个重要的日志,bin log(归档日志).redo ...
- 数据库中的两个最重要的日志redo log和binlog
mysql整体来看其实只有两部分,一部分是server层,一部分是引擎层. 1.redo log(重做日志):当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写入redo log里面,并更新 ...
- MySQL的两种日志类型,redo log,binlog
文章内容学习:极客时间-林晓彬老师-MySQL实战45讲 整理而得 我们知道MySQL数据库在发生意外宕机的情况下,可以将数据恢复到历史的某个时间点,能实现这个功能依靠的是日志,MySQL提供两种类型 ...
- MySQL日志系统bin log、redo log和undo log
MySQL日志系统bin log.redo log和undo log 今人不见古时月,今月曾经照古人. 简介:日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,主要包括错误日 ...
- Oracle重做日志和日志挖掘
重做日志-Redo log 首先给出参考资料: 1.Oracle官网-Managing the Redo Log 为什么需要redo log 内存中数据修改后,不必立即更新到磁盘---效率 由日志完成 ...
- 详细分析MySQL事务日志(redo log和undo log)
innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过程,其实它 ...
随机推荐
- mac上安装npm
检查brew -v是否安装了homebrew这个macOS 缺失的软件包的管理器.如果安装,跳转到第3步,否则跳转到第二步: 安装homebrew.安装跳转到官网指导.等待安装好之后,输入brew - ...
- 微信小程序之 catalog 切换
组件名称:catalog 组件属性:catalogData,type:String 组件描述:这是一个子组件,数据从父组件中传递 效果图: catalog 目录为多个,使用 scroll-view 容 ...
- MYSQL第一课
rm-rf /* 不能用 完全删除 数据库不能直接存储数据 table 表 DB 数据库 DBMS 数据库操作系统 SQL 结构化查询语言 语句不区分大小写,但字符串常量区区分大小写.建议命令大写. ...
- 渗透测试学习 二十八、WAF绕过详解
大纲: WAF防护原理讲解 目录扫描绕过WAF 手工注入绕过WAF sqlmap绕过WAF 编写salmap绕过WAF 过WAF一句话编写讲解 菜刀连接绕过WAF webshell上传绕过WAF 提权 ...
- win10查看桌面壁纸路径
如题,win10查看自己壁纸的缓存路径,就是找到壁纸的原图:在explorer里输入 %USERPROFILE%\AppData\Roaming\Microsoft\Windows\Themes 1 ...
- CodeForces-1253B(贪心+模拟)
题意 https://vjudge.net/problem/CodeForces-1253B 把一个序列划成几段,使得每一段都是+x在-x前面,二者均要有. 问划成几段,每一段的大小是多少. 思路 用 ...
- postman---postman简单介绍
有小伙伴们想要了解postman,今天它来了,不要问它到底有多强大,自古免费好用即是王道,它不仅仅是开发接口强大的调试工具,还是测试接口的居家必备,它不仅仅可以把需要调用的接口保存下来方便调用,还可以 ...
- linux学习(六)文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限.为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Linux中我们可 ...
- 有关csp自我反思
首先说说体会把 这次前几个都是模拟,最后一道题以为自己可能会结果是半吊子根本不会,导致浪费了三个小时写第五题只有十分 如果不畏惧字符串而专心的写第三题的话,应该结果会不一样把.希望下次能好好考 第一题 ...
- Luogu P5416 [CTSC2016]时空旅行
第一次写线段树分治的题目,没想到是道这么毒的题233 首先发现题目里的\((x,y,z,c)\)就是在放屁,只有\((x,c)\)是有用的 因此我们可以把题意转化为,在某一个时间节点上,求出所有元素的 ...