当前位置:网站首页>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
可串行化;该级别下给读加了共享锁;所以事务都是串行化的执行;此时隔离级别最严苛;
不同隔离级别下的并发异常

边栏推荐
猜你喜欢

vscode终端无法使用解决的办法

基于PaddleOCR解决文本检测训练模型与inference模型预测效果不一致的问题
![[AI] action recognition using simple neural network -- Based on coco key points](/img/67/cd6be6e070fb5d4d44ee043ebd7fac.png)
[AI] action recognition using simple neural network -- Based on coco key points

Email (including attachments, Netease, QQ)

Nacos配置管理

微信小程序5-基础加强(没写完)

Nacos configuration management

【C语言—零基础第六课】输入输出语句格式与复合语句

新手学习渗透测试的入门指南

uniapp 表单(input、radio、picker)提交获取参数值
随机推荐
es6新增-函数部分
【Es6】forEach,for... in ,for... Of column, which allows you to quickly distinguish the usage and differences of various for statements through project cases (full version). There are detailed notes ins
轮播图节流阀原理及本地存储归总
[ES6] explain in detail the common objects and other methods of set and array (full version)
ArcMap 创建常量栅格并镶嵌至新栅格
vscode终端无法使用解决的办法
Case summary of rotation chart moving speed (constant speed, slow motion)
BUUCTF web WarmUp
微信小程序 学习笔记
(精讲)Es6 剩余参数,ES6内置对象,模板字符串内容(详例宝典)及灵活运用项目的实战案例
Cesium bind mouse events and remove mouse events
markdown笔记以及Typora相关快捷键
ArcGIS 点云(xyz)数据转DEM
指针进阶简单总结
Markdown notes and related shortcut keys of typora
路由器loopback口实验
小程序云开发表单提交并在页面中获取数据
Pat class B 1002: write this number
Web3js development technology
SQL注入