在存在并发事务的情况下,可能会出现一些异常现象(anomaly),这些现象会导致事务的执行结果与预期不一致。根据 SQL 标准,事务并发异常主要分为以下几种:
- 脏读(dirty read):事务可能会读出另一个未提交事务写入的数据
- 不可重复读(nonrepeatable read):事务多次读取同一个数据行时,可能会因为另一个已提交事务的修改读到不同的结果。
- 幻读(phantom read):事务多次查询时,可能会会因为另一个已提交事务的修改读到不同的数据行。
- 序列化异常(serialization anomaly):事务的执行结果与某个串行执行的结果不一致。