数据库的隔离级别指的是多个用户操作统一个数据库的同一张表时,相互影响的程度大小,数据库的隔离级别越高,数据库的相互影响的风险也就越小,但是对应的数据库的运行效率也就越低,数据库总共有四种隔离级别,下面一一介绍,介绍隔离级别之前,先来介绍数据库操作可能出现的几个问题;
1、脏读:脏读是在一个事物中读取到了别人未提交的数据,例如有2个事物A和B,A修改了一条记录但是没有提交,此时B读取到了A修改的这条没有提交的记录,这就叫脏读;
2、不可重复读:不可重复读是在一次事物中前后两次读取数据库的结果不一致,其本质是2次读取数据库之间有别的事物修改了数据库,例如有事物A第一次读取数据库的某一条记录,然后去做别的逻辑处理了,此时事物B修改这条记录,事物A再读取这条记录的时候发现和第一次读取的记录不一样,这就是不可重复读;
3、幻读:幻读是指两次读取的数据不一致的情况,例如有2个事物A和B,事物A第一次读取age=100的记录返回1条记录,此时事物B向表中插入一条age=100的记录,事物A再次读取age=100时返回2条记录,避免方法是事物处理完成之前,不能向表里面插入任何数据;
接着我们来看看数据库为我们提供的集中数据库隔离级别:
读未提交:read uncommitted ,可能出现脏读、不可重复读、幻读;
读已提交:read commited,可能出现不可重复读、幻读;
可重复读: repeatable read,可能出现幻读;
串行读:Serializable,以上情况都不会出现
效率由上到下依次减小,安全依次增高;