这个单词并不一定特指数据库中的事务处理,狭义地理解来说,在业务方那个(开发者)来说,一个不可再分的业务动作,这个动作最终表达为一条或者多条SQL语句

1、事务的4个特性:ACID

Atomic(原子性):业务动作对应的SQL应该是看作一个整体,不可再分的,针对数据的修改只能All or None

Consistency(一致性):业务方来定义的,针对数据整体做的不可变的承诺

Isolation(隔离性):当有多个DBMS的用户,同时针对数据做增删查改时,是否互相保持隔离的特性,最理想的情况下,一个用户在操作数据时,是意识不到其他用户同时也在操作数据的。

Durability(持久性):一旦DBMS通知我们数据修改成功了,则数据必然修改成功了(修改被持久化了)

注:Consistency(最终目标)需要DBMS和程序员共同付出努力来进行维护的,Atomic和Durability是单用户场景下的关于数据存储和恢复的问题,Isolation是多用户场景下的,属于并发控制的内容

DBMS承诺,属于DBMS的责任,DBMS承诺支持事务,指的就是支持A、D、I

2、SOL怎么使用事务?

start transaction;告诉DBMS一个事务明确开启了(多条SQL组成的事务),执行属于这个事务的SQL

commit; 提交,明确告诉DBMS一个事务完成了

3、事务的成功 commit(执行成功)与失败

注:无论成功还是失败,数据的一致性是不能被破坏的

(1)被动失败

① 硬件的原因

②软件的原因:DBMS本身的原因;程序员的原因

注:由于没有执行commit,十五期间做的部分修改都会被回滚(rollback)

(2)主动失败

我们可以主动要求事务失败(数据回滚),不去执行commit,而去执行rollback

4、事务期间可以设置保存点(savepoint)

有了savepoint之后,可以选择回滚到哪个保存点

5、一次开启的事务,只和一条连接(connection)有关

6、隔离级别:

serializable(可串行性):每个事务,必须排队执行,一次一条事务

snapshot read(快照读):不是标准中存在的隔离级别

repeatable read(可重复读):保证了在一次事务过程中(只要没有提交或者回滚),看到的值是不会变化的(即使有别的事务对这个数据做过修改,并且已经提交了,只是针对表中已有的数据做保护了,没有针对新添加的数据保护,有幻读的副作用

read committed(读已提交):可以看到别的事务已经提交的修改数据,有不可重复读,幻读的副作用

read uncommitted(读未提交):多个同时在执行的事务,可以读取到(看到)其他事务,还处于事务未提交的数据修改(完全没隔离),有脏读,不可重复读,幻读的副作用

注:Mysql的默认情况下,隔离级别就是可重复读

事务(Transaction)的简单理解相关推荐

  1. 事务(transaction)的简单介绍

    什么是事务 一个事务,是一个完整的业务逻辑单元,不可再分. 比如银行账户转账,从A账户向B账户转账1k,需要执行两条update语句: update t_act set balance = balan ...

  2. [分布式系统][事务]对2PC的理解

    今天学习2PC相关知识,结合论文概念和具体的例子理解.之后会编程自己实现一下. 全文关键词:提交协议.原子性.协调者.阻塞.关键缺点. P.S. 通过右侧自动目录查找相关内容更方便噢~ 2PC概念 两 ...

  3. Spring事务(Transaction)的传播(propagation)属性以及隔离(isolation)级别

    目录 1 Spring事务 1.1 定义 1.1.1 事务概念 1.1.2 事务分类 1.2 声明式事务 1.2.1 @EnableTransactionManagement工作原理 1.2.2 实现 ...

  4. 关于Spring事务tx:annotation-driven/的理解(Controller可以使用@Transactional)

    在使用SpringMvc的时候,配置文件中我们经常看到 annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx.mvc 等也能很直白的理解出来分别的作用.<tx: ...

  5. 数据库事务Transaction)那点事

    Transaction 也就是所谓的事务了,通俗理解就是一件事情.从小,父母就教育我们,做事情要有始有终,不能半途而废. 事务也是这样,不能做一般就不做了,要么做完,要么就不做.也就是说,事务必须是一 ...

  6. 乐观锁和悲观锁的简单理解

    乐观锁和悲观锁的简单理解 一.悲观锁 每次读取数据时认为其他线程会修改这个数据,所以每次读的时候都会加锁,实现悲观锁需要使用数据库的锁机制 1.共享锁 2.排他锁 3.行锁 ① 共享锁 共享锁也称为S ...

  7. Introduction To AMBA 简单理解

    文章目录 前言 简介 AMBA 的演进 AMBA 演进图解 AMBA specifications AMBA1.0 1.1 Introduction to AMBA 1.2 AMBA Specific ...

  8. Android:安卓学习笔记之OkHttp原理的简单理解和使用

    Android OkHttp使用原理的简单理解和使用 OkHttp 0.前言 1.请求与响应流程 1.1 请求的封装 1.2 请求的发送 1.3 请求的调度 1.4 请求的处理 2.拦截器 2.1 R ...

  9. Spring Security并没有那么难嗷 简单理解OAuth2.0

    文章目录 1. 基本概念 1.1 什么是认证 1.2 什么是会话 1.3 什么是授权 1.4 授权的数据模型 1.5 RBAC 1.5.1 基于角色的访问控制 1.5.2 基于资源的访问控制 2. 基 ...

  10. 项目架构相关知识的个人简单理解(水平有限,勿喷)

    (一)传统架构 一台Web应用服务器Tomcat并发量为400,如果当并发量为40000时,理论上需要100台: 同一个工程部署到多台服务器上就会存在两个问题: 问题1: 在Tomcat集群中节点数量 ...

最新文章

  1. python 怎样使list 里面的数据相加
  2. 如何使用postman测试流文件_干货|如何用Postman做集成测试
  3. python类对象和实例对象
  4. Speex回声消除原理深度解析
  5. 2014年最新前端开发面试题
  6. CodeSandbox v3 发布,Web 项目的在线开发
  7. java---随机小结
  8. mysql 笔记打包下载_mysql 5.7压缩包安装笔记
  9. 难道网上就没有真正完全无误的Postfix教程了吗?
  10. mac中 安装mysql无法启动_Mac 下安装MySQL(dmg方式),无法启动
  11. 12个优秀的开源UML工具
  12. pc安装android,在电脑上安装安卓的过程
  13. CSS实现长宽比的几种方案,CSS如何实现长宽比?
  14. Python+AI智能编辑人脸
  15. 6月13日云栖精选夜读:数梦工场完成A轮7.5亿融资 三个维度构建“新型互联网”
  16. 中央电化教育馆教学资源库介绍
  17. java文件乱码_java文件读取出现乱码解决方法
  18. SAP中供应商寄售库存返回操作实例
  19. CHAPTER 9 Web服务与应用(一)
  20. setContentView时候报错

热门文章

  1. JDBC四个核心对象及其常用方法
  2. 【Spring Boot教程】(七):自定义项目启动的彩蛋
  3. SpringCloud微服务架构实战:商家权限体系设计及开发
  4. Python处理CSV,Excel,PDF和图片
  5. 一文读懂——全局注意力机制(global attention)详解与代码实现
  6. Latex公式内行间距,字体大小控制
  7. Haskell语言学习笔记(30)MonadCont, Cont, ContT
  8. 在Mac中删除残留的启动台图标
  9. 让自己分享的网址在QQ中更有逼格
  10. 星巴克与阿里巴巴集团结成战略合作伙伴关系,共同变革中国咖啡行业的客户体验