一、含义
事务:一条或多条 sql 语句组成一个执行单位,一组 sql 语句要么都执行要么都不执行
二、特点(ACID 属性)
A.原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么 都发生,要么都不发生。
C.一致性(Consistency) 事务必须使数据库从一个一致性状态变换到另外一个一致性状态 。
I.隔离性(Isolation) 事务的隔离性是指一个事务的执行不能被其他事务干扰,即一个 事务内部的操作及使用的数据对并发的其他事务是隔离的,并发 执行的各个事务之间不能互相干扰。
D.持久性(Durability) 持久性是指一个事务一旦被提交,它对数据库中数据的改变就是 永久性的,接下来的其他操作和数据库故障不应该对其有任何影 响
三、事务的使用步骤★
隐式(自动)事务:没有明显的开始和结束,本身就是一条事务可以自动提交,比如 insert、update、delete;
显式事务:具有明显的开始和结束
使用显式事务
① 开启事务
SET autocommit=0;
START TRANSACTION;
② 编写一组逻辑 sql 语句
注意:sql 语句支持的是 insert、update、delete
设置回滚点:
SAVEPOINT回滚点名;
③ 结束事务
提交事务:COMMIT;
回滚事务:ROLLBACK;
回滚到指定的地方:ROLLBACK TO 回滚点名;
四、并发事务
1、事务的并发问题是如何发生的?
多个事务 同时操作 同一个数据可的相同数据
2、并发问题有哪些?
脏读:一个事务读取了其他事务还没有提交的数据,读到的是其他事务“更新”的数据
不可重复读:一个事务多次读取,结果不一样
幻读:一个事务读取了其他事务还没有提交的数据,只是读到的是其他事务“插入”的数据
3、如何解决并发问题
通过设置隔离级别解决并发问题
4、隔离级别
脏读 不可重复读 幻读
read uncommitted:读未提交 √ √ √
read committed:读已提交 × √ √
repeatable read:可重复度 × × √
serializable:串行化 × × ×
原文地址:https://www.cnblogs.com/xifengbuqi/p/9218891.html