事务

作者: 壮少Bryant | 来源:发表于2020-03-21 22:19 被阅读0次

通俗的说事务:

原子性:要么都成功执行,要么都不执行.

隔离性:其他会话不能够看到中间改变的过程

一致性:事务发生前,和发生后,数据的总额依然匹配

持久性:事务产生的影响不能够撤销

举例说明
A1000,B1000,A要给B转500

1、 脏读 : B可以读到A未commit的事务
设置隔离级别为:read uncommitted

A:开启事务:start transaction;
转账500
未Commit提交
A通知B,转账成功,叫B查询

B: 开启事务:start transaction;
select... 查到了,A500,B1500,交易ok

此时:Arollback回滚,变成A1000,B1000,
B欲哭无泪,上当了

2、不可重复读(虚读):同一个事务,读到的不一样
设置隔离级别为:read committed

A开启事务:start transaction;
B开启事务:start transaction;
Bselect A1000,B1000
此时A转账了500,并且commited
由于B之前开启了事务,但是未commit,并且之前查A1000,B1000,此时B又想查一遍,咦,为啥变成了A500,B1500了?

就是因为B开启的事务 && 未提交前,两次查询不一致,就叫做虚读。

那这样不好吗?比如财务要像老板汇报,今年收益达到了35%,刚刚汇报给老板,此时可以发生了一些事情,收益降低了5%,老板一看,这不是30%吗,你能力是不是有问题?
财务欲哭无泪!此时财务就得需要把事务隔离设置为repeatable read,这样再未commit之前,读到的数据,才会保持不变。

3、设置repeatable read,会产生幻读,和上面正好相反,A事务修改了,B事务就看不到修改了

4、设置serializable:串行化

A 开启事务,未commit之前,此时B做了select操作,对不起,请等着,
等Acommit之后,B的select才有结果。

相关文章

  • java事务

    1、java事务介绍 2、JDBC事务 3、JTA事务 1、java事务介绍 java事务分类:JDBC事务、...

  • 事务、MySQL与Python交互、Python 中操作 MyS

    1、事务 事务操作分两种:自动事务(默认)、手动事务 手动事务的操作流程 开启事务:start transacti...

  • 数据库事务书目录

    数据库事务 事务概念 本地事务 全局事务 全局事务的定义 J2EE中全局事务的实现 全局事务的优缺点 基于消息的分...

  • MySQL事务

    MySQL-innodb-事务 事务的特性 事务的生命周期 失败的事务: 事务的控制语句 面试题 事务日志-red...

  • mysql事务隔离机制及其隔离级别、实现原理分析

    目录 事务特性ACID属性 并发事务带来的问题 事务隔离级别 事务实现原理 事务特性ACID属性 事务特性指的就是...

  • MULE事务配置

    在mule的事务可能为jdbc事务,jms事务,xa事务等,多种事务.这里讲解事务的几个动作: 相关的文档:htt...

  • 事务—事务模型

    程序猿基础知识的学习、理解、整理——事务(方方土) 事务,看似很简单,其实很复杂,作为一个程序猿,你对事务到底了解...

  • 事务—XA事务

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是XA事务?在什么场景下会出现XA事务? @Transac...

  • 事务—事务模式

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是事务模式?这里提到的事务模式,主要是指在系统设计过程中的...

  • JDK动态代理给Spring事务埋下的坑

    service 模拟动态代理事务 测试类 预测结果模拟事务:开启事务execute doLink模拟事务:关闭事务...

网友评论

      本文标题:事务

      本文链接:https://www.haomeiwen.com/subject/fdhpyhtx.html