事务(Transaction)的简单理解
这个单词并不一定特指数据库中的事务处理,狭义地理解来说,在业务方那个(开发者)来说,一个不可再分的业务动作,这个动作最终表达为一条或者多条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)的简单理解相关推荐
- 事务(transaction)的简单介绍
什么是事务 一个事务,是一个完整的业务逻辑单元,不可再分. 比如银行账户转账,从A账户向B账户转账1k,需要执行两条update语句: update t_act set balance = balan ...
- [分布式系统][事务]对2PC的理解
今天学习2PC相关知识,结合论文概念和具体的例子理解.之后会编程自己实现一下. 全文关键词:提交协议.原子性.协调者.阻塞.关键缺点. P.S. 通过右侧自动目录查找相关内容更方便噢~ 2PC概念 两 ...
- Spring事务(Transaction)的传播(propagation)属性以及隔离(isolation)级别
目录 1 Spring事务 1.1 定义 1.1.1 事务概念 1.1.2 事务分类 1.2 声明式事务 1.2.1 @EnableTransactionManagement工作原理 1.2.2 实现 ...
- 关于Spring事务tx:annotation-driven/的理解(Controller可以使用@Transactional)
在使用SpringMvc的时候,配置文件中我们经常看到 annotation-driven 这样的注解,其含义就是支持注解,一般根据前缀 tx.mvc 等也能很直白的理解出来分别的作用.<tx: ...
- 数据库事务Transaction)那点事
Transaction 也就是所谓的事务了,通俗理解就是一件事情.从小,父母就教育我们,做事情要有始有终,不能半途而废. 事务也是这样,不能做一般就不做了,要么做完,要么就不做.也就是说,事务必须是一 ...
- 乐观锁和悲观锁的简单理解
乐观锁和悲观锁的简单理解 一.悲观锁 每次读取数据时认为其他线程会修改这个数据,所以每次读的时候都会加锁,实现悲观锁需要使用数据库的锁机制 1.共享锁 2.排他锁 3.行锁 ① 共享锁 共享锁也称为S ...
- Introduction To AMBA 简单理解
文章目录 前言 简介 AMBA 的演进 AMBA 演进图解 AMBA specifications AMBA1.0 1.1 Introduction to AMBA 1.2 AMBA Specific ...
- Android:安卓学习笔记之OkHttp原理的简单理解和使用
Android OkHttp使用原理的简单理解和使用 OkHttp 0.前言 1.请求与响应流程 1.1 请求的封装 1.2 请求的发送 1.3 请求的调度 1.4 请求的处理 2.拦截器 2.1 R ...
- Spring Security并没有那么难嗷 简单理解OAuth2.0
文章目录 1. 基本概念 1.1 什么是认证 1.2 什么是会话 1.3 什么是授权 1.4 授权的数据模型 1.5 RBAC 1.5.1 基于角色的访问控制 1.5.2 基于资源的访问控制 2. 基 ...
- 项目架构相关知识的个人简单理解(水平有限,勿喷)
(一)传统架构 一台Web应用服务器Tomcat并发量为400,如果当并发量为40000时,理论上需要100台: 同一个工程部署到多台服务器上就会存在两个问题: 问题1: 在Tomcat集群中节点数量 ...
最新文章
- python 怎样使list 里面的数据相加
- 如何使用postman测试流文件_干货|如何用Postman做集成测试
- python类对象和实例对象
- Speex回声消除原理深度解析
- 2014年最新前端开发面试题
- CodeSandbox v3 发布,Web 项目的在线开发
- java---随机小结
- mysql 笔记打包下载_mysql 5.7压缩包安装笔记
- 难道网上就没有真正完全无误的Postfix教程了吗?
- mac中 安装mysql无法启动_Mac 下安装MySQL(dmg方式),无法启动
- 12个优秀的开源UML工具
- pc安装android,在电脑上安装安卓的过程
- CSS实现长宽比的几种方案,CSS如何实现长宽比?
- Python+AI智能编辑人脸
- 6月13日云栖精选夜读:数梦工场完成A轮7.5亿融资 三个维度构建“新型互联网”
- 中央电化教育馆教学资源库介绍
- java文件乱码_java文件读取出现乱码解决方法
- SAP中供应商寄售库存返回操作实例
- CHAPTER 9 Web服务与应用(一)
- setContentView时候报错
热门文章
- JDBC四个核心对象及其常用方法
- 【Spring Boot教程】(七):自定义项目启动的彩蛋
- SpringCloud微服务架构实战:商家权限体系设计及开发
- Python处理CSV,Excel,PDF和图片
- 一文读懂——全局注意力机制(global attention)详解与代码实现
- Latex公式内行间距,字体大小控制
- Haskell语言学习笔记(30)MonadCont, Cont, ContT
- 在Mac中删除残留的启动台图标
- 让自己分享的网址在QQ中更有逼格
- 星巴克与阿里巴巴集团结成战略合作伙伴关系,共同变革中国咖啡行业的客户体验