MySQL数据库InoDB存储引擎Log漫游.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MySQL数据库InoDB存储引擎Log漫游

00 – Undo Log Undo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版本并发控制(简称:MVCC)。 - 事务的原子性(Atomicity) ??事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在执行的过程中发生 ??了错误,要回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过。 - 原理 ? Undo Log的原理很简单,为了满足事务的原子性,在操作任何数据之前,首先将数据备份到一个地方 ? (这个存储数据备份的地方称为Undo Log)。然后进行数据的修改。如果出现了错误或者用户执行了 ? ROLLBACK语句,系统可以利用Undo Log中的备份将数据恢复到事务开始之前的状态。 除了可以保证事务的原子性,Undo Log也可以用来辅助完成事务的持久化。 - 事务的持久性(Durability) ? 事务一旦完成,该事务对数据库所做的所有修改都会持久的保存到数据库中。为了保证持久性,数据库 ? 系统会将修改后的数据完全的记录到持久的存储上。 - 用Undo Log实现原子性和持久化的事务的简化过程 ? 假设有A、B两个数据,值分别为1,2。 ? A.事务开始. ? B.记录A=1到undo log. ? C.修改A=3. ? D.记录B=2到undo log. ? E.修改B=4. ? F.将undo log写到磁盘。 ? G.将数据写到磁盘。 ? H.事务提交 ? 这里有一个隐含的前提条件:‘数据都是先读到内存中,然后修改内存中的数据,最后将数据写回磁盘’。 ? 之所以能同时保证原子性和持久化,是因为以下特点: ? A. 更新数据前记录Undo log。 ? B. 为了保证持久性,必须将数据在事务提交前写到磁盘。只要事务成功提交,数据必然已经持久化。 ? C. Undo log必须先于数据持久化到磁盘。如果在G,H之间系统崩溃,undo log是完整的, ? ? ?可以用来回滚事务。 ? D. 如果在A-F之间系统崩溃,因为数据没有持久化到磁盘。所以磁盘上的数据还是保持在事务开始前的状态。 缺陷:每个事务提交前将数据和Undo Log写入磁盘,这样会导致大量的磁盘IO,因此性能很低。 如果能够将数据缓存一段时间,就能减少IO提高性能。但是这样就会丧失事务的持久性。因此引入了另外一 种机制来实现持久化,即Redo Log. 01 – Redo Log - 原理 ? 和Undo Log相反,Redo Log记录的是新数据的备份。在事务提交前,只要将Redo Log持久化即可, ? 不需要将数据持久化。当系统崩溃时,虽然数据没有持久化,但是Redo Log已经持久化。系统可以根据 ? Redo Log的内容,将所有数据恢复到最新的状态。 - Undo + Redo事务的简化过程 ? 假设有A、B两个数据,值分别为1,2. ? A.事务开始. ? B.记录A=1到undo log. ? C.修改A=3. ? D.记录A=3到redo log. ? E.记录B=2到undo log. ? F.修改B=4. ? G.记录B=4到redo log. ? H.将redo log写入磁盘。 ? I.事务提交 - Undo + Redo事务的特点 ? A. 为了保证持久性,必须在事务提交前将Redo Log持久化。 ? B. 数据不需要在事务提交前写入磁盘,而是缓存在内存中。 ? C. Redo Log 保证事务的持久性。 ? D. Undo Log 保证事务的原子性。 ? E. 有一个隐含的特点,数据必须要晚于redo log写入持久存储。 - IO性能 ? Undo + Redo的设计主要考虑的是提升IO性能。虽说通过缓存数据,减少了写数据的IO. ? 但是却引入了新的IO,即写Redo Log的IO。如果Redo Log的IO性能不好,就不能起到提高性能的目的。 ? 为了保证Redo Log能够有比较好的IO性能,InnoDB 的 Redo Log的设计有以下几个特点: ? A. 尽量保持Redo Log存储在一段连续的空间上。因此在系统第一次启动时就会将日志文件的空间完全分配。 ? ? ?以顺序追加的方式记录Redo Log,通过顺序IO来改善性能。 ? B. 批量写入日志。日志并不是直接写入文件,而是先写入redo log buffer.当需要将日志刷新到磁盘时 ? ? ?(如事务提交),将许多日志一起写入磁盘. ? C. 并发的事务共享Redo Log的存储空间,它们的Redo Log按语句的执行顺序,依次交替的记录在一起, ? ? ?以减少日志占用的空间。例如,Redo Log中的记录内容可能是这样的: ? ??

文档评论(0)

zhanci3731 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档