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