事务4种隔离级别分析
数据库在并发的情况下,可能会出现脏读、不可重复读、幻读等问题。为了避免以上问题,数据库事务增加隔离级别,来保证数据的准确性。隔离级别从低到高有4个级别:未提交读(Read uncommitted)、提交读(Read committed)、可重复读(Repeatable read)、序列化(Serializable) 。 一、并发问题 1、 脏读 事务T1正在操作一条数据,此时事务T2获取该条数据纪录,如果T1异常,事务回滚,T2读取到的数据就是脏数据,这种现象称为脏读。 2、 不可重复读 事务T1多次读取某条记录,在读取间隔中,事务T2更新了该技术的数据,当T1再次读取该记录时,获取到的数据不一致,这种现象称为不可重复读。 产生的原因主要是数据的更新 。 3、幻读 事务T1批量处理多条记录,此时事务T2新增或删除了一条或多条记录,当T1处理完成,查询处理结果,会发现有记录没有处理(T2新增的)或者发现记录少了(T2删除的),会有一种幻觉的感觉,这种现象称为幻读。 主要是数据的新增或删除导致。 二、隔离级别 1、 未提交读(Read uncommitted) ①定义:就是一个事务读取到其他事务未提交的数据,是级别最低的隔离机制。 ②缺点:会产生脏读、不可重复读、幻读。 ③案例解读:以前交易所炒股的时候,股民老王购买了5000股,操作员操作录入(此时开启事务),操作时手误