Mysql之事务

什么是事务

假如你下了一笔订单,会有以下数据库操作:

1. 生成一笔订单记录 
2. 减少库存  
3. 从你的账户中减少金额  
4. 生成支付记录    

这边的四个操作缺一不可,一旦某一个操作出现异常,则全部操作都需要全部回滚。而事务的作用就是保证在出现异常的情况下能够对操作进行回滚。

事务的特性:

原子性(Atomicity)

  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

一致性(Consistency)

  一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。
  拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。

隔离性(Isolation)

  隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
  即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。

持久性(Durability)

  持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。

事务的隔离级别

脏读

  脏读是指在一个事务读取了另一个未提交的事务中的数据。
  如:事务B商品C的库存进行了修改,但是该事务还未提交。这时候事务A读取了商品C的库存,后来发现代码有问题,对事务B进行了回滚,那么事务A读取的就是脏数据了。
  一般都是事务的隔离级别保证的就是这个,隔离级别越高效率越低。

不可重复读

  不可重复读是指事务A在查询过程中,事务B修改了数据。第一次和第二次的结果不同。
  但这是可以接受的。

幻读

   幻读指的是事务A在读取过程,事务B对添加了一些数据,导致读取的结果长度有了变化。

场景

具体场景

  1. 如上述所说,一个操作需要有多个操作来完成时需要事务

代码场景

  1. 一个方法内部,对数据库的写操作超过两条及以上。

分布式事务

   假设上述的操作,在四个节点进行操作,普通的事务回滚将不会有效。因为不知道所有的操作是否都成功了。

解决办法一: 事务补偿

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机增加内存方法

楼主由于要在虚拟机里面装一个oracle,在安装过程中,提示物理内存不符合最低标准,如图1. 图1 因为懒得新建一个虚拟机了,所以考虑给虚拟机新增磁盘空间。 首先说明,新增磁盘空间,必须保证当前虚拟机里每个新…

面对对象-封装

private 私有的 package/friendly/default 不写 protected 受保护的 public 公共的 那么什么情况该用什么修饰符呢?从作用域来看,public能够适用所有的情况。 但是大家在工作的时候,又不会真正全部都适用public,那么到底什么情况改用什么修饰…

本文详解5G是个什么鬼,程序员都准备好了吗?

无线移动通讯发展历史 最近5G的概念炒的如火如荼,为此,华为和高通还干了一仗。这篇文章从技术层面给大家分析,什么是5G,它和4G比,高级在哪里? 我们来看看移动互联网的技术发展: 然后我们在来看看…

Istio流量管理实践之(5): 使用cert-manager部署Istio自定义入口网关及进行证书管理...

Istio Gateway提供多个自定义入口网关的支持能力,通过开放一系列端口用于承载网格边缘的进入连接,同时可以使用不同loadbalancer来隔离不同的入口流量。cert-manager可用于使用存储在Kubernetes Secret资源中的任意签名密钥对来获取证书。本文提供了手动…

[bzoj3625][Codeforces 250 E]The Child and Binary Tree(生成函数+多项式运算+FFT)

3625: [Codeforces Round #250]小朋友和二叉树 Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 650 Solved: 283[Submit][Status][Discuss]Description 我们的小朋友很喜欢计算机科学,而且尤其喜欢二叉树。考虑一个含有n个互异正整数的序列c[1],c[2],...,c[n]。…

子序列进阶问题

题目: 有一个数组,让找到两个不重复的连续子序列A,B ,求Max(Sum(A)-Sum(B) 分析: AB必定连续,设两端连接处index为{X,x1},X可取0~n-1 设F(x)为连接处index为{X,x1}时 Max(Sum(A)…

day5-shelve模块

一、概述前面章节我们讲述了json和pickle模块的序列化和反序列化处理,他们有一个不足是在python 3中不能多次dump和load,shelve模块则可以规避这个问题。shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持…

程序员:请你不要对业务「置之不理」

成长是条孤独的路,一个人会走得更快;有志同道合者同行,会走得更远。本篇内容整理自 21 天鲲鹏新青年计划线上分享内容。鲲鹏新青年计划是由 TGO 鲲鹏会组织的线上分享活动,希望能帮助更多同学一起学习、成长。12 月 28 日&#xf…

在Ubuntu系统下如何将chrome浏览器的bookmarks导出到本地

1. 打开chrome浏览器在页面的右上角点击那个三个小点的位置,找到bookmarks,然后点击bookmarks manager,然后在organize右侧大倒三角下选择,export bookmarks to HTML,选择要保存的位置,利用同样的方法下次就可以直接导…

028 -bash-4.1$ 出现故障的原理及解决办法?

最近在搭建分布式的时候,出现了这个问题,很不爽。下面是我的解决方式。 1.在用户下删除bash rm -rf /home/beifeng/.bash* 2.拷贝 cp /etc/skel/.bash* /home/beifeng 3.退出,再进入用户 4.解释 set |grep -i ps1 转载于:https://www.cnblogs…

李彦宏千字愿景内部信:10次提到“用户”

中新网1月17日电 1月17日,百度公司创始人、董事长兼CEO李彦宏发出一封内部信,信中,李彦宏向员工阐述了百度愿景:成为最懂用户,并能帮助人们成长的全球顶级高科技公司。他提出,百度要持续创新,“…

spring-boot 速成(8) 集成druid+mybatis

spring-boot与druid、mybatis集成(包括pageHelper分页插件), 要添加以下几个依赖项: compile(mysql:mysql-connector-java:6.0.5)compile(tk.mybatis:mapper-spring-boot-starter:1.1.1)compile(org.mybatis.spring.boot:mybatis-spring-boot-starter:1.…

我们怎样确保从大数据计算中获得价值

我们怎样确保从大数据计算中获得价值 支持大数据方案并不是在硬件以及软件层次终止,企业要想真正地从大数据中受益,领导者必须改变思考与对待信息的方式。 我们怎样确保从大数据计算中获得价值? 当所有可用数据都可用时,大数据…

青海省多地日降水量突破历史极值

受高原槽和西北冷空气的共同影响,青海省海西州茫崖等多地日降水量突破历史极值。 李万花 摄 受高原槽和西北冷空气的共同影响,青海省海西州茫崖等多地日降水量突破历史极值。 李万花 摄 中新网西宁1月18日电 (孙睿 赵海梅)记者18日从青海省气象局获悉&am…

ORB-SLAM2中四叉树管理特征点

当从图像金字塔中的每一层图像上提取特征点之后,都要先用四叉树技术对这些特征点进行管理 //该类中定义了四叉树创建的函数以及树中结点的属性 //bool bNoMore: 根据该结点中被分配的特征点的数目来决定是否继续对其进行分割 //DivisionNode()&#xff…

SharePoint Search之(七)Search result- 结果源

在使用搜索引擎的时候。非常多情况下,用户希望限定一下搜索范围,以便更加easy找到想要的结果。在SharePoint 2013的search里,也支持类似的功能,SharePoint 默认提供了几种范围: 在SharePoint,这个叫Search …

旷视砸20亿进军AIoT,发布国内首个机器人协作大脑河图

1 月 16 日,人工智能独角兽旷视科技发布了机器人战略,以及自 2018 年 4 月收购艾瑞思机器人,进军机器人领域的最新进展——智能协同大脑河图。在会上,旷视还大笔一挥,决定投入 20 亿元,用于打造物流仓储上下…

「JupyterLab」 Jupyter Notebook 新生代IDE模式页面

参考:Overview 安装: $ pip install jupyterlab 启动(不是jupyter notebook): $ jupyter lab Jupyterlab中最好用的就是显示csv数据。CSV数据显示效果: 安装插件 jupyterlab是和jupyter notebook隔离的&…

PAT(乙级)1009

1009. 说反话 (20)给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母&…