对于同时运行的多个事务,当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题:
情形一:脏读
对于两个事务T1、T2,T1 读取了已经被 T2 更新但还没有被提交的字段,之后,若 T2 回滚, T1读取的内容就是临时且无效的。
情形二:不可重复读
对于两个事物 T1、T2,T1 读取了一个字段,然后 T2 更新了该字段。之后,T1再次读取同一个字段,值就不同了。
情形三:幻读
对于两个事务 T1、 T2, T1 从一个表中读取了一个字段,然后 T2 在该表中插入了一些新的行。之后, 如果 T1 再次读取同一个表,就会多出几行.
数据库事务的隔离性: 数据库系统必须具有隔离并发运行各个事务的能力,使它们不会相互影响,避免各种并发问题。
一个事务与其他事务隔离的程度称为隔离级别。数据库规定了多种事务隔离级别, 不同隔离级别对应不同的干扰程度, 隔离级别越高,数据一致性就越好,但并发性越弱。