1.MySQL的事务隔离
1.1四种隔离级别
- 序列化(SERIALIZABLE)
- 可重复读(REPEATABLE READ)
- 提交读(READ COMMITED)
- 未提交读(READ UNCOMMITED)
1.2四种级别的表达含义
- 序列化:表示用户之间的crud是有序的,是一个接着一个的执行的。
- 可重复读:表示当用户操作数据库后另一个用户再操作同一个数据库的时候,产生的结果是一致的(用户之间执行的是同操作)因为正在执行的事务所产生的影响,外部是看不到的。
- 提交读:表示可以看到其他事务对数据库的修改,在事务处理期间如果其他事务修改了相应的表,那么同一个事务的多个select语句可能会返回不同的结果。
- 未提交读:表示处于这个级别的事务可以读到其他事务为提交的数据。
1.3脏读,不可重复读以及幻读的含义
- 脏读:一个事务读到另一个事务未提交的数据,称之脏读。
- 不可重复读:指一个事务先后读取同一条记录,但两次的数据不同,称之不可重复读。
- 幻读:指一个事务根据条件查询,而另一个事务插入一条记录而这条记录刚好满足第一个事务的条件,然后执行第一个事务就可以看到第二个事务的记录,称之为幻读。
1.3隔离级别和脏读,不可重复读以及幻读的对应关系
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
未提交读 | 允许 | 允许 | 允许 |
提交读 | 不允许 | 允许 | 允许 |
可重复读 | 不允许 | 不允许 | 允许 |
序列化 | 不允许 | 不允许 | 不允许 |
参考:江南一点雨link