在数据库管理系统中,事务必须具备四个特性,即原子性A、一致性C、隔离性I、持久性D。

对于隔离性,SQL标准定义了四种隔离级别,级别由低到高依次为:
(1)READ UNCOMMITED读取未提交内容——会产生脏读、不可重复读、幻读
(2)READ COMMITED读取提交内容——解决脏读,会产生不可重复读、幻读
(3)REPEATABLE READ可重复读——解决脏读、不可重复读、会产生幻读;在这个隔离级别,InnoDB使用“间隙锁”策略防止幻读问题的产生:不仅对查询中读取的行进行加锁,而且还对索引结构中的间隙Gaps进行加锁。
(4)SERIALIZABLE可串行化——解决脏读、不可重复读、幻读
不同的数据库产品实现了不同的隔离级别,或实现了某些隔离级别,其中InnoDB实现了全部四种,通过配置可以控制隔离级别
脏读、不可重复读、幻读的区别
脏读:一个事务读到另外一个事务还没有提交的数据
不可重复读:同一个事务中两次读取到的数据不一样,重点在于表记录的修改
幻读:同一事务中两次读取到的表记录数不一样,重点在于表记录的增加或删除