所谓的事务隔离级别就是,同一个数据库出现多个不同的线程操作(事务)。每个事务之间的关系就是事务隔离级别。
MySQL查询数据库当前的隔离级别的语句为:select @@tx_isolation;
ISOLATION_DEFAULT:默认隔离级别,由数据库本身决定以下四种中的某一种。
根据现实情况,事务隔离级别有四个。
根据四个隔离级别,可能会出现,脏读,不可重复读,幻读
ISOLATION_READ_UNCOMMITTED:可以读未另一个事务提交的数据
(一个事务操作时,另一个事务可以查询,也可以提交,还可以读取别的事务没有提交的数据)
ISOLATION_READ_COMMITTED :只能读已提交的数据,(解决脏读问题,ORACLE默认)
(一个事务操作(增删改)时,另一个事务可以查询,也可以提交,但是不能读取别的是没有提交的数据)
ISOLATION_REPEATABLE_READ:是否读取其他事务提交修改后的数据,解决不可以重复读问题(MySQL默认)(在一个事务操作时,另外一个事务不能提交,但是可以查询,适合!!!)
ISOLATION_SERIALIZABLE:是否读取其他提交增加后的数据,解决幻读问题(在一个事务操作时,例外一个事务不能提交,也不能查询)
脏读:如图所示

不可重复读,如图所示

幻读,如图所示

隔离级别有四种类型:
- ISOLATION_READ_UNCOMMITTED :一个事务可以读取另一个事务的没有提交的数据
- ISOLATION_READ_COMMITTED:一个事务只能读取另一个事务的提交后的数据
- ISOLATION_REPEATABLE_READ:一个事务在操作的时候,另一个事务不能提交,只能读取
- ISOLATION_SERIALIZABLE:一个事务在查询的时候,另一个事务终止一切操作,包括查询
来源:oschina
链接:https://my.oschina.net/u/4117398/blog/3037404