什么是隔离级别
多个连接开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个连接在获取数据时的准确性。
为什么要有隔离级别
当一个数据库被多个连接访问同一张表时,一个连接进行操作时另一个连接可能出现各种数据错误;
1、脏读
当一个事务读取另一个事务尚未提交的修改时,产生脏读
2、不可重复读
同意查询在同一事务中多次进行,由于其他提交事务所做的修改或删除,每次返回不同的结果集,此时发生不可重复读
3、幻读
同一查询在同一事务中多次进行,由于其他提交事务所做的插入操作,每次返回不同的结果集,此时发生幻读
解决方法
为事务增加隔离级别
mysql默认隔离级别REPEATABLE-READ
将隔离级别修改为READ-UNCOMMITTED
创建一张表以供测试
CREATE TABLE `account`(
id INT,
`name` VARCHAR(32),
money DOUBLE);
在一个服务中插入数据但未提交,却能在另一方中查询到提交的数据
发生了脏读
当一方修改数据时但未提交,另一方却能够直接查询到修改后的数据
发生了不可重复读
当一方插入数据时但未提交,另一方却能够直接查询到插入后的数据
发生了幻读
当有多个连接进行数据操作时如果不加以隔离控制,数据的查询会变得十分混乱
当二者隔离级别皆为REPEATABLE-READ时则以上错误皆不会出现