当前位置:网站首页>mysql的事务
mysql的事务
2022-07-17 05:08:00 【HjasnJH】
事务是什么?
事务将数据库从一种一致性状态转换为另一种一致性状态,事务可由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成;在数据库提交事务时,可以确保要么所有修改都已经保存,要么所有修改都不保存;事务是访问并更新数据库各种数据项的一个程序执行单元。
在 MySQL innodb 下,每一条语句都是事务;可以通过 set autocommit = 0; 设置当前会话手
动提交;
事务的ACID特性
原子性(A)
事务要么提交,要么回滚
一致性(C)
一致性由业务定义,指事务从一种一致性状态转换为下一种状态时,其业务约束没有被破坏,比如唯一键仍然为唯一键。
隔离性(I)
事务的隔离指事务的执行与其他事务相互隔离,通过MVCC(多版本并发控制)和锁来实现。
持久性(D)
事务提交后,事务的操作将会被持久化而不丢失。
常见事务语句
-- 显示开启事务
START TRANSACTION | BEGIN
-- 提交事务,并使得已对数据库做的所有修改持久化
COMMIT
-- 回滚事务,结束用户的事务,并撤销正在进行的所有未提交的修改
ROLLBACK
-- 创建一个保存点,一个事务可以有多个保存点
SAVEPOINT identifier
-- 删除一个保存点
RELEASE SAVEPOINT identifier
-- 事务回滚到保存点
ROLLBACK TO [SAVEPOINT] identifier
事务可能出现的并发异常
1、脏读(读未提交)
事务(A)可以读到另外一个事务(B)中未提交的数据;也就是事务A读到脏数据;
2、不可重复读(读已提交)
事务(A) 可以读到另外一个事务(B)中提交的数据;
3、幻读(REPEATABLE READ)
事务中一次读操作不能支撑接下来的业务逻辑;常发生在一个事务中一次读判断接下来写操作失
败的情况;
四种隔离级别
READ UNCOMMITTED
读未提交;该级别下读不加锁,写加排他锁,写锁在事务提交或回滚后释放锁
READ COMMITTED
读已提交;从该级别后支持 MVCC (多版本并发控制),也就是提供一致性非锁定读;此时读取操作读取历史快照数据;该隔离级别下读取历史版本的最新数据,所以读取的是已提交的数据
READ COMMITTED
可重复读;该级别下也支持 MVCC,此时读取操作读取事务开始时的版本数据;
SERIALIZABLE
可串行化;该级别下给读加了共享锁;所以事务都是串行化的执行;此时隔离级别最严苛;
不同隔离级别下的并发异常
边栏推荐
- Easypoi excel multi sheet import
- Easypoi excel simple export
- The principle and local storage of the throttle valve of the rotation chart are summarized
- Multifunctional (Implementation) encapsulation function
- Base64 and file conversion
- 热更新及其原理
- Two methods of obtaining URL parameters and various methods of obtaining location objects
- 使用Echars实现水滴状、环形图、分割图、堆叠、组织架构图、地图轮廓等图表
- Two methods of rotation chart and automatic rotation
- 手把手教你复现Log4j2核弹级漏洞
猜你喜欢
随机推荐
【Es6】利用添加数据,筛选并传输至页面等多项功能实现案例
【C语言—零基础第十三课】字符串的奥秘
单臂路由配置
STL容器——queue与deque的基本操作
Submit the uniapp form (input, radio, picker) to get the parameter value
【C语言—零基础第十一课】旋转大转盘之指针
Pat class B 1017: a divided by B
H5如何获取内网IP和公网IP
H5页面使用js生成二维码
UML(用例图,类图,对象图,包图)
BUUCTF web WarmUp
STL container -- basic operation of map
Cesium 获取鼠标点击处经纬度的三种方法
STL container - basic operation of vector
Multifunctional (Implementation) encapsulation function
Web3js development technology
Baidu map realizes thermal map
Cesium geojson数据的添加与移除
父组件加scoped有时也会影响子组件
微信小程序 学习笔记