1、Redo log、Undo log存放位置

首先,我们先要知道InnoDBredo log、undo log存放位置。InnoDB的事务日志是指Redo log,简称log,存放在日志文件ib_logfile*里面。而Undo log则是存放在共享表空间文件里面(ibdata*)。

2、事务的原子性我们知道,InnoDB存储引擎是事务型存储引擎,其具有ACID特性,即:原子性、一致性、隔离性、持久性。Undo log就是为了实现事务的原子性。何为原子性呢?事务的原子性:事务中的所有操作,要么全部完成,要么不作任何操作,不能只做部分操作。如果在执行事务的过程中发生了错误,就要回滚到事务开始前的状态,就好像这个事务从来没执行过一样。

3、Undo log原理Undo log的原理其实很简单,Undo log是为了满足事务的原子性,当你在数据库中操作任何数据之前,比如你要修改某条记录的数据,InnoDB首先会将数据备份到一个地方(这个存储数据备份的地方就是Undo log)。然后进行数据的修改。如果在执行事务的过程中出现了错误或者用户执行了ROLLBACK(回滚)语句,系统可以利用Undo log中的备份将数据恢复到事务开始前的状态。Undo log除了可以保证事务的原子性之外,还可以用来辅助完成事务的持久化。

4、事务的持久化事务一旦完成,该事务对数据库所做的修改都会持久保存到数据库中。为了保证数据的持久性,MySQL会将修改过的数据完全记录到持久的存储设备上(比如硬盘咯~~)

5、用Undo log实现原子性和持久性的事务的简化过程

现在假设我们有两个数据,A=1、B=2    1)事务开始(start transactionorset autocommit=0)    2)假设现在我们要修改A记录,那么记录A=1到Undo log    3)现在修改A=3    4)假设现在我们还要修改B记录,那么记录B=2到Undo log    5)现在修改B=4    6)将Undo log日志记录写到磁盘    7)将修改后的数据A=3、B=4写到磁盘    8)提交事务

这里有一个隐含的前提条件:“因为InnoDB存储引擎把数据和索引都缓存在

InnoDB_buffer_pool_size设定的内存缓冲区中,所以当我们修改InnoDB表数据时,会先修改buffer pool中的数据,最后将buffer pool中的数据写入到磁盘。”

Undo log之所以可以保证事务的原子性和持久性,是因为在上述的简化事务过程中有以下的特点:a、在更新任何数据前,先把数据的原始状态记录到Undo log;b、为了保证数据的持久性,必须在提交事务之前先把数据写到磁盘上,

只要事务一提交,数据必然持久化到存储设备上;c、Undo log先于数据持久化到磁盘。如果在上述事务简化过程的 7)~8)过程中系统崩溃了,

那么Undo log还是完整的,可以用来回滚事务以恢复到事务开始前的状态;d、如果在上述事务简化过程的 1)~6)过程中系统崩溃了,由于修改后的数据并没有持久化到磁盘,

所以这并不影响数据库中的数据,数据还是保持在事务开始前的状态。

上述事务简化过程中存在一个缺陷:每个事务提交前都要将数据和Undo log写入磁盘,这样会导致大量的磁盘IO,造成性能低下。    解决办法:如果能够将修改的数据缓存一段时间,就能减少磁盘IO以提高性能。但是这样会丧失事务的持久性。因此就有了另外的一种机制来实现数据的持久化,这就是InnoDB的Redo log。

6、Redo log原理和Undo log相反,Redo log记录的是新数据的备份。在事务提交前,只需要将Redolog持久化,不需要将数据数据持久化。当数据库系统崩溃时,虽然数据没有持久化,但是Redo log已经持久化了。在系统从崩溃中恢复时,可以根据Redo log中的内容,将所有的数据恢复到最新的状态。

7、引入了Redo log之后,现在InnoDB存储引擎是Undo log和Redo log协同合作,它们的事务简化过程为:假设有A、B两个数据,A=1、B=2    1)事务开始;    2)记录A=1到undo log;    3)修改A=3;    4)记录A=3到redo log;    5)记录B=2到undo log;    6)修改B=4;    7)记录B=4到redo log;    8)将redo log写入磁盘;    9)提交事务。

8、Undo log+Redo log事务的特点    1)、为了保证数据的持久性,必须在事务提交前将Redo log持久化到存储设备上;    2)、数据不需要在事务提交前写入磁盘,而是缓存在内存中;    3)、Redo log写入到了磁盘,故可以保证事务的持久性;    4)、Undo log用于错误回滚、保证事务的原子性;    5)、这里有一个隐含的点,就是数据是在事务提交后才写入持久存储设备上的,

它是晚于Redo log写入存储设备的。如果数据早于Redo log写入存储设备,

那么如果在数据写入存储的过程中发生了错误,Redo log就不能用于重做数据了。

undo log mysql_MySQL的redo log与undo log相关推荐

  1. archive log文件大小与redo log文件大小关系探究

         首先我们来看下什么是archive log file,oracle 11g 的concept中是这样定义的:When you enable archiving of the online r ...

  2. log file sync(日志文件同步) 与 Log file parallel write 等待事件

    log file sync(日志文件同步)等待事件具有一个参数:buffer#.在Oracle Database 10g中,这种等待事件位于Commit等待下面.当处理log file sync等待事 ...

  3. Last_Error: Relay log read failure: Could not parse relay log event entry.

    综合网上各种答案,总结一下,还是有帮助的. Relay log corruption example: You can get error info after SHOW SLAVE STATUS; ...

  4. python log日志_python脚本攻略之log日志

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  5. java log 断点_项目中常见的log日志调用

    第一种用法:引用org.apache.commons.logging.Log. import org.apache.commons.logging.Log; import org.apache.com ...

  6. python linux log,linux,python 常用的处理log的命令

    一般的log文件都是需要过滤 ps:管道符| 管道符前面的输出值 grep 过滤查找 将是error的log过滤显示 grep '221.2.100.138'  web.access.log grep ...

  7. oracle如何添加undo,ORACLE RAC 11G 添加以及删除UNDO表空间

    在生产环境上,由于闪存盘的容量有限,现在需要将闪存盘里面的UNDO表空间,替换到非闪存的磁盘里面. 磁盘的使用情况如下: 表空间使用情况如下: RAC两个节点占用将近167G的空间. 操作步骤如下: ...

  8. python里的log怎么表示_python中的对数log函数表示及用法

    在数学运算中,如果没有计算器,对于很大的数字相乘,我们花费大量的时间计算,而且一旦出错,就要重新计算,很是麻烦.其实对于数字相乘,不依靠靠计算器,想要准确简单的运算的方法不是没有,那就是对数和指数,他 ...

  9. Linux清理Log日志,释放自增长的log文件

    1.使用df查看磁盘使用情况 Size容量  used已用  avail可用  use%已用%  mounted on挂载点 2.若某个目录的空间使用过高,可使用"cd  /目录名" ...

最新文章

  1. oracle job使用详解及job不运行的检查方法
  2. java jstack dump 线程 介绍 解释
  3. ElasticSearch 简介,概念和集成
  4. 通过python实现linux切换用户_Python操作远程服务器切换到root用户
  5. 聚类实践(无监督学习)
  6. Python学习指南高清PDF版,速存!24小时后删除
  7. 6-C/C++实现数据结构链表相关操作
  8. Java中创建线程池的正确方法
  9. linux用户管理命令(添加,删除,修改)
  10. VS2013打包teamtalk
  11. 问题:宇视摄像机如何对接第三方录像机
  12. linux系统live管理界面,live-系统爱好者
  13. ApacheCN 活动汇总 2019.8.30
  14. c语言的链表ppt,C语言链表详解ppt.ppt
  15. uniapp - app 获取短信内容
  16. layui下拉框联动
  17. 【CSDN】【自用】CSDN操作
  18. 微软Windows 11正式发布!(文末送书)
  19. 基于word2vec的虚假新闻检测系统
  20. 电脑风扇控制软件-全网最全教程+下载链接

热门文章

  1. 立刻、马上对你的电脑做这三件事!
  2. Windows 10 装Ubuntu 搞定了
  3. 百度AI学习:四、自然语言处理-1.词法分析
  4. s时钟画布 android,Canvas画布实现自定义时钟效果
  5. 钱大妈生鲜“败走北京”
  6. 微信安卓版8.0.18内测更新 增加个人信息收集清单
  7. 中国移动上市第二日逼近破发线
  8. 王者荣耀、QQ音乐发声明:异常登录问题已解决
  9. iPhone 13 系列不再齐「芯」,苹果为什么要造三款不同的 A15 处理器?
  10. 芯片短缺并未缓解,机构数据显示交付周期在7月份已超过20周