【SQL 用大白话描述事务并发 可能会遇到的问题】及解决策略
在SQL数据库中,当多个事务同时进行时,可能会出现并发事务问题。这些问题通常包括以下几种:
首先,我们要清楚一点,这些问题都是与事务的四大特性之一的隔离性有关。并且通常发生在并发事务场景中。
-
脏读(Dirty Read):
脏读发生在一个事务读取了另一个事务未提交的数据。如果那个事务最终回滚了,那么读取的数据将是无效的,这会导致依赖这些数据的操作或决策出现问题。大白话:脏读是指一个事务还未结束,但中途提交了一个修改的数据,这个数据恰好被其它事务读取到了。
-
不可重复读(Non-repeatable Read):
不可重复读发生在一个事务重新读取之前已经读取过的数据时,发现数据已经被其他事务修改了。这通常发生在其他事务更新了这些数据并提交了更改。大白话:在一个事务中,当数据被读取两次或多次时,由于其他并发事务对数据进行了修改并提交了更改,导致在同一个事务中对同一数据的多次读取结果不一致。
-
幻读(Phantom Read):
幻读发生在一个事务读取了满足某个条件的一组记录,然后另一个事务插入了满足该条件的新记录,并提交了事务。当第一个事务再次读取时,会发现出现了之前不存在的新记录。大白话:在一个事务中,当读取某个范围内的一组数据两次时