数据库并发可能出现的问题:
dirty read (脏读)
发生场景: 一个事务读取另一个还没有比提交的事务进行的修改,因为其他事务进行的修改随后有可能回滚,并且第一个事务可能编写的数据无效。
unrepeatable read (不可重复读)
发生场景:如果一个事务读取一行数据两次,但是每次读取到不同的状态。
phantom read (幻读)
发生场景:一个事务执行一个查询两次,并且第二结果集包含第一个结果集中不可见行,或者包含已删除的行。
数据库隔离级别:
1.read uncommitted
未提交读,允许脏读
允许 dirty read、nonrepeatable read、phantom read
2.read committed
提交读,只能读取到其它事务已经提交的数据。可能会出现nonrepeatable read 、 phantom read
3.repeatable read
可重复读,在同一个事务内的查询都与事务开始时刻读取的一致。可能会出现 phantom read
4.serializable
串行读,事务隔离度级别最高。
oracle支持level2 和level4 mysql支持level1--level4