首页 / 更多教程 / Atitit 数据库事务实现原理
Atitit 数据库事务实现原理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Atitit 数据库事务实现原理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2183字,纯文字阅读大概需要4分钟。
内容图文
数据库事务实现原理
1.1. 自己在程序中实现事务操作。
如果只是需要事务的话,你自己给mongo操作加上事务功能就可以啦。。数据库事务只不过是他自己实现了而已。。如果数据库不支持事务,就要你在代码里面实现事务就可以了。。
最简单方便的就是使用日志方式来做事务就可以了。。
比如插入俩个数据。每执行一个sql,就生成一个undo日志即可。。
Undo日志表如下字段(事务id,表格名称,操作【insert,update,delete】,原记录id,新记录id)
如果后面的sql失败了。那么根据undo日志,撤销掉前面执行的sql数据即可。
主要流程如下。根据事务id,得到前几个sql语句新增的记录id,然后删除这几个id的数据即可。。
如果提交成功,那么可以删除掉此事务id对应的undo日志即可。。
1.2. 事务有两种方式达到这样的目的: Shadow copies/pages(影像拷贝/影像页面): 每ransaction log (事务日志)
Shadow copies/pages(影像拷贝/影像页面): 每个事务拷贝一份自己的数据库(或者是数据库的一部分),在这份拷贝上操作。出错了,就删除这份拷贝。成功后,使用文件系统的功能 做一下文件交换,替换掉旧的数据。
Transaction log (事务日志):Transaction log是这样一块存储区域–在事务将数据写到磁盘之前先将信息写到Transaction log文件。这样,如果服务发生崩溃、事务被取消;数据库清楚如果根据日志删除数据,或者继续完成未完成的操作。
1.3. innodb通过undo log和redo log来实现。
事务中,每当执行一条SQL语句对数据产生了影响,就会记录下来与之相反的操作到undo log(撤销日志)中,例如,更新会记录之前的状态,删除会形成insert,添加会形成delete,一旦事务被回滚,则执行undo log中记录的操作,来完成恢复到之前的状态。这里是个 逻辑恢复哦!
同时,每当执行一条事务中的SQL,会将操作记录到redo log中,此时事务一旦被提交,就将该redolog中的操作,持久化到磁盘上,数据就持久的记录下来了(ACID的D)。
PS:还有,undolog才是原子性的关键
2. 隔离级别的概念
关系型数据库工作原理-事务管理(二) - 数据库其他综合 - 红黑联盟.html
作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 )
汉字名:艾提拉(艾龙), EMAIL:1466519819@qq.com
转载请注明来源: http://www.cnblogs.com/attilax/
Atiend
Atitit 数据库事务实现原理
标签:取消 shadow 逻辑 汉字 sql语句 pie 简单 bar http
本文系统来源:http://www.cnblogs.com/attilax/p/6006321.html
内容总结
以上是互联网集市为您收集整理的Atitit 数据库事务实现原理全部内容,希望文章能够帮你解决Atitit 数据库事务实现原理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。