作家
登录

爱炫耀的数据库老头儿

作者: 来源: 2017-11-08 09:18:12 阅读 我要评论

“Undo日记文件中不仅仅只有余额, 事务的开端和停止也会记录,如不雅我在日记文件中看到了[提交事务 T1], 或者 [回滚事务 T1], 我就知道这个事务已经停止,不消再去理会它了, 更不消去恢复。 如不雅我只看到 [开端事务 T1], 而找不到提交或回滚,那我就得恢复。比如下面这个:”

[开端事务 T1]

[事务T1, 旺财原有余额,200]

[事务T1, 小强原有余额,50]

4独门特技

“纰谬吧, 你这个Undo日记文件会见临和数据文件一样的问题, 都是须要加载到内存才能读写, 要不然会太慢。 那如果连日记文件还没写好就断电了,那不照样玩完?” Ngnix 眼光如炬,向深层次发掘。

这是个绝佳的问题,大年夜家纷纷把眼光杀向数据库老头儿,欲望这一次能把他打翻在地。

老头儿沉着自如,没有答复,反而给大年夜家抛出一个问题:“你们想想,我什么时刻应当记录Undo日记,什么时刻把Undo日记写入文件呢?”

“事务一开端的时刻就得把Undo日记写入文件, 如许最安然!”

老头儿笑了笑说: “蠢材! 一开端的时刻我都不知道法度榜样到底要操作那个字段,怎么记录Undo日记,怎么写入硬盘文件? ”

“那怎么办啊? ”

“这就是我的独门秘笈了, 我给大年夜家举个例子, 你们可要看细心了, 我把日记记录也放到了内存的Undo日记缓冲区,乘机写入硬盘。”

“不知道你们这些小同伙看出一点门道儿没有?” 老头儿问道。

“让我想想” Ngnix说, “如不雅体系在第4步和第5步之间崩溃,旺财的余额写入了硬盘,然则小强的还没写入, 那Undo日记看起来是如许的:

[开端事务 T1]

[事务T1, 旺财原有余额,200]

因为找不到事务停止的日记, 你会进行恢复操作, 把旺财的原有余额给恢复了。 ”

[开端事务 T1]

[事务T1, 小强原有余额,50]

因为没有事务停止的日记,你也须要进行恢复,把旺财和小强的原有余额恢复成200和50 ”

[事务T1, 旺财原有余额,200]

CPU阿甘也不甘示弱说: “如不雅是在第8步和第9步之间体系崩溃, 旺财和小强的最新余额都写入了硬盘, 也提交了事务, 然则提交事务的操作没有写入Undo 日记, 所以Undo日记照样如许:”

[开端事务 T1]

[事务T1, 旺财原有余额,200]

因为没有事务停止的日记,你还得须要进行恢复,把旺财和小强的原有余额恢复成200和50”

数据库老头笑眯眯的听着大年夜家的分析,似乎异常的享受: “是不是可以敷衍各类情况啊? 啊?”

大年夜家纷纷点头,佩服无比。

Tomcat都不叫老头儿,改称为老师长教师了: “ 老师长教师, 似乎是有什么内涵的规律,您给说说!”

数据库老头儿无比自得, 兴趣勃勃地说, “这就是我的独门秘笈了, 其实很简单了, 就两条:

“好啊, 比如旺财有200块钱, 小强有50 块钱,如今旺财要给小强转账,假设转100块吧, 你说说,你是怎么实现要么不做,要么全做的。 ”

1. 在你把最新余额写入硬盘之前, 必定要先把相干的Undo日记记录写入硬盘。 例如[事务T1, 旺财原有余额,200] 必定要在旺财的新余额=100写入硬盘之前写入。


【本文为51CTO专栏作者“刘欣”的原创稿件,转载请经由过程作者微信"大众,"号coderising获取授权】

戳这里,看该作者更多好文

[事务T1, 小强原有余额,50]

【编辑推荐】

  1. 11 月全球数据库排名:PostgreSQL保持上升趋势 一路高涨
  2. 毕竟为什么要惹人数据库中心件
  3. 数据库高可用筹划PK:选择Oracle照样MySQL?
  4. 经由过程机械进修来主动调优数据库
  5. Oracle数据库隐含参数应用的五个原则和四个建议
【义务编辑:武晓燕 TEL:(010)68476606】

  推荐阅读

  编程大神SethBling开发AI软件 在《马里奥赛车》中获得胜利

国外的游戏编程大年夜神SethBling又推出新玩意,此前他曾经在《我的世界》中开辟了一套MOD,可以或许在MC中运行Atari 2600模仿器,并运行《大年夜金刚》《太空入侵者》等游戏;他也曾经在>>>详细阅读


本文标题:爱炫耀的数据库老头儿

地址:http://www.17bianji.com/lsqh/38576.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)