Atitit 数据库事务实现原理

 

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://blog.csdn.net/attilax

Atiend

 

Atitit 数据库事务实现原理相关推荐

  1. mysql 数据库事务处理_MySQL数据库事务及其原理

    基本概念 MySQL 事务主要用于处理操作量大,复杂度高的数据. 银行转账是经典的解释事务的例子.用户A给用户B转账5000元主要步骤可以概括为如下两步. 第一,账户A账户减去5000元: 第二,账户 ...

  2. 数据库事务的概念及其实现原理

    目录 1. 认识事务 1.1 为什么需要数据库事务 1.2 什么是数据库事务 1.3 事务如何解决问题 1.4 事务的ACID特性以及实现原理概述 2.并发异常与并发控制技术 2.1 常见的并发异常 ...

  3. 15张图呈现数据库事务背后的并发原理

    本文分享自华为云社区<将数据库9种锁.3种读.4种隔离级别一次性串联起来,用15张图呈现背后数据库事务背后的并发原理>,作者: breakDawn. 前段时间开发时,正好遇到了2个进程同时 ...

  4. oracle 事务实现原理,数据库事务的实现原理

    1. 前言 都知道数据库事务有ACID特性(原子性.一致性.隔离型.持久性),本文简单聊一下它们的实现原理. 2. 日志文件 2.1. redo log redo log叫做重做日志,是用来实现事务的 ...

  5. Spring 事务传播原理及数据库事务操作原理

    相关内容: 架构师系列内容:架构师学习笔记(持续更新) 先看看 Spring 事务的基础配置 <beans xmlns="http://www.springframework.org/ ...

  6. 【网站架构】一招搞定90%的分布式事务,实打实介绍数据库事务、分布式事务的工作原理应用场景

    大家好,欢迎来到停止重构的频道.本期,我们来聊一下数据库事务以及分布式事务. 大家都在强调事务的重要性,而分布式事务也说是微服务必备的.但又说事务会影响性能,分布式事务更是很复杂的东西.使得大家都很迷 ...

  7. mysql数据库事务的实现原理

    这里写自定义目录标题 1.为什么要知道数据库事务的实现原理 2.事务使用场景 3.事务的特性 4.事务实现原理 4.1.原子性 4.2.隔离性与一致性 4.3.事务的锁 4.4.innoDB默认隔离级 ...

  8. 深入理解Spring事务原理【为何有了数据库事务还要使用Spring事务】

    一.事务的基本原理 Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的.对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:     ...

  9. 数据库事务原理及并发、死锁

    1. 什么是数据库事务 1.1 数据库事务是指作为单个逻辑工作单元执行的一系列操作(SQL语句).这些操作要么全部执行,要么全部不执行. 1.2 通过ACID实现数据库事务模型 1.2.1 原子性(A ...

  10. C#数据库事务原理及实践(下)

    另一个走向极端的错误 满怀信心的新手们可能为自己所掌握的部分知识陶醉不已,刚接触数据库库事务处理的准开发者们也一样,踌躇满志地准备将事务机制应用到他的数据处理程序的每一个模块每一条语句中去.的确, ...

最新文章

  1. 最简单的日历控件“星期几”变为“几”
  2. Linux2.6内核 -- 编码风格(2)
  3. c语言贪吃蛇游戏完整代码
  4. GIS中最短路径的实现
  5. 解题报告——习题2-5 分数化小数(decimal) 输入正整数a,b,c,输出a/b的小数形式,精确到小数点后c位。
  6. Centos7下搭建LAMP环境,安装wordpress(不会生产博客,只是一名博客搬运工)(菜鸟)
  7. css鼠标变成小手_技巧篇:CSS高级技巧详解
  8. 3d激光雷达开发(平面分割)
  9. SPEC2016亚洲峰会召开在即,中国市场服务器效率首度解密
  10. (day 49 - 另起数组牺牲空间换取时间 ) 剑指 Offer 66. 构建乘积数组
  11. Atitit 学校工作手册attilax艾提拉总结 目录 1. 团队文化 宗旨 与使命 2 1.1. 学术教育vs 技术教育vs 技能职业教育 2 1.2. 天堂模式vs地狱模式 2 2. 组织结构
  12. java cxf文件上传下载,CXF webservice 上传以及下载文件
  13. 修改网页标题前面的logo
  14. iOS系统与Windows电脑如何做到无线传输文件?
  15. 凡人修仙传显示无法连接服务器,凡人修仙传进不去 无法连接服务器 登陆失败 闪退 黑屏...
  16. oracle CPU 最佳型号推荐,盘点目前热门性价比CPU有哪些型号?2019年主流级台式机CPU推荐...
  17. Android开发 个人开发者几大后端云比较
  18. ubuntu18.04 升级内核后,进入系统页面卡在“started gnome display manager“的解决方案
  19. 一文阐述数据科学完整学习路线图
  20. python io.StringIO函数

热门文章

  1. mysql判断后执行查询语句吗_如何看mysql执行的sql语句
  2. Everything常见问题及搜索技巧
  3. 四 Lync Server 2013 部署指南-前端部署(2)
  4. spark的集群安装
  5. Puppet之基础篇
  6. 转 Java多线程中Sleep与Wait的区别
  7. Oracle 安装报错 [INS-06101] IP address of localhost...
  8. Perceptron实践
  9. wordpress靶机快速搭建
  10. 清北学堂模拟赛d1t5 拍照(photo)