事务
-
概念:一组相互捆绑共同完成操作的执行单元
-
事务属性:ACID
- 原子性(Atomicity):语句共同操作
- 一致性(Consistency):事务执行前后整体不改变
- 隔离性(Isolation):一个事务执行不能被其他事务干扰
- 持久性(Durability):事务提交后即生效,不可更改
- 事务使用方法:
- 事务的开启:SET autocommit = 0; start transaction;
- 编写事务语句:语句1;语句2;…
- 事务结束:commit;或者 rollback;
-
事务隔离:避免多个事务相互冲突
-
常见的并发问题:
- 脏读:读出了无效的,其他事务未提交的数据(脏数据)
- 不可重复读:一个事务内,多次查询出现了不同的结果;重点在数据被修改
- 幻读:读到的数据条数不一样,重点在新增和删除
-
隔离级别(MySQL):
- Read Uncommited:允许事务读取其他未提交事务的变更,脏读,不可重复读,幻读都会出现
- Read Commited:只允许事务读取其他事务提交的更改,可以避免脏读,但有不可重复读,幻读
- Pepeatable Read:在此事务持续期间不允许其他事务更改该字段,但可读,可出现幻读
- Serialization:在此事务期间禁止其他事务的任何操作
-