1. 事务
事务:一条或者多条SQL语句组成一个执行单元,特点是要么同时成功要么同时失败,每条语句都相互依赖,形成一个整体,如果失败或者出现错误,那么状态会撤回到事务最初状态(回退)
- 开启事务 start transaction; 开启事务后所有的操作都是虚拟化的
- 回滚事务 rollback; 结束事务并回退
- 提交事务 commit; 结束事务并提交
2. 提交方式
- 自动提交 1 默认值
- 手动添加 0
- 查询事务提交方式 select @@autocommit;
- 修改事务提交方式 set @@autocommit=0; 1为自动提交 0为手动添加
如果修改为手动提交 不开始事务 做增删改查 操作也需要commit操作才生效
3. 事务的四大特征(ACID)
原子性(Atomicity)
- 指事务包含的所有操作要么全部成功,要么全部失败回滚
因此事务的操作成功则要应用到数据,操作失败则不能对数据库有影响
- 指事务包含的所有操作要么全部成功,要么全部失败回滚
一致性 (Consistency)
- 一致性指事务必须使数据库从一个一致性变化到另外一个一致性
也就是说一个事务执行之前和执行之后都必须处于一个一致性
- 一致性指事务必须使数据库从一个一致性变化到另外一个一致性
隔离性(isolcation)
- 隔离性是当多个用户并发访问数据库时,如操作同一张表时,数据库为每个用户开启事务
不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
- 隔离性是当多个用户并发访问数据库时,如操作同一张表时,数据库为每个用户开启事务
持久性(durability)
- 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的
即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作
- 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的
4. 事务的隔离性级别
引发的问题
- 查询数据库隔离级别 select @@TX_ISOLATION;
修改数据库隔离级别 set global transaction isolation level 级别; 修改后需要重新连接数据库
- REPEATABLE READ 默认级别
- 脏读 指的事务未被提交 另外一个事务已经可以查询到该事务的数据
- 不可重复读 指两个事务开启 其中一个事务已经提交了 另外一个事务读取到该事务的数据 正常来说应该是读取不到的,需要结束事务后才能读取
- 幻读 指查询某个数据不存在 但插入时无法无插入此数据,并且之后发现数据已经存在表中 或 某数据不存在 但执行删除操作 缺成功了