隔离级别
脏读
一个事务读取了其他事务还没有提交的变更
可重复读
同样的条件,读取多次数据,后读出来的数据和之前的一样。 后读出来和之前不一样(因为另一个事务对该条件的数据修改提交了)
幻读
同样的条件,第一次和第二次读出来的记录数不一样。(因为另一个事务对该条件的数据插入/删除提交了)
第一类丢失更新
一个事务的回滚覆盖了另一个事务提交的update。
第二类丢失更新
一个事务提交的update覆盖了另一个事务提交的update。
而数据库的隔离级别可以看做这几种条件满足的组合:
| 隔离级别 | 脏读 | 可重复读 | 幻读 | 第一类丢失更新 | 第二类丢失更新 |
|---|---|---|---|---|---|
| 读未提交 READ-UNCOMMITTED | 是 | 否 | 是 | 否 | 是 |
| 读已提交 READ-COMMITTED | 否 | 否 | 是 | 否 | 是 |
| 可重复读 REPEATABLE-READ | 否 | 是 | 是 | 否 | 否 |
| 序列化 SERIALIZABLE | 否 | 是 | 否 | 否 | 否 |
所有的事务隔离级别都满足第一类丢失更新
查询事务隔离级别:
show variables like ‘%isolation’;
自动提交
mysql的每一次修改都会自动开启事务,如果不设置自动提交就需要手动提交,否则看不到修改内容
隐式提交
隐式提交就是在开启一个事务后,去执行下图中的操作时,会先提交这个开启的事务

列:
begin
update
drop *
commit
当执行到drop这句时,会先自动提交这个事务。如果drop操作出错会发生回滚,但不会成功,因为此时事务已经提交了
查看设置
show variables like ‘autocommit’
