一、事务的隔离级别要解决的问题: 1)脏读:读到了其它事务未提交的数据即脏读,未提交意味着数据有可能会被回滚,也就是最终有可能不会存储到数据库中,即读到了最终不一定存在存在的数据,即为脏读 2)可重复读:在一个事务内,最开始读到的数据和事务结束前任意时刻读到的同一批数据都是一致的。通常针对数据的Update操作。 3)幻读:事务A对某些行的内容做了更改,但还未提交。此时事务B插入了与事务A更改前的记录相同的记录行,并且在事务A提交之前先提交了。此时,事务A的查询,会发现刚刚的更改不起作用,但其实是刚刚事务B插进来的。让用户很魔幻,像出现了幻觉一样,这就是幻读
二、SQL 标准定义了四种隔离级别,MySQL 全都支持。这四种隔离级别分别是:1. 读未提交(READ UNCOMMITTED)2. 读提交 (READ COMMITTED)3. 可重复读 (REPEATABLE READ)(mysql 默认)4. 串行化 (SERIALIZABLE)
从上往下,隔离强度逐渐增强,性能逐渐变差。采用哪种隔离级别要根据系统需求权衡决定,其中,可重复读是 MySQL(INNODB) 的默认级别