这只是为了我自己对并发问题如何工作的理解。假设我有一个与select查询同时运行的insert语句。如果在select查询仍在运行时发生insert语句,那么select查询是否会显示冲突,因为要选择的行数已更改?
或者只是在编辑行时才会出现并发冲突,使插入语句完全无害(就并发冲突而言)?
答案 0 :(得分:0)
维基佩达的文章相当不错:
但基本上并发问题发生在任何时候事务正在使用的数据被另一个事务更改。
所以让我说我从数据库中获得前100行。其他人对第5行进行了更改。然后我尝试根据我的读取更改第5行。
或插入案例。
让我们说我把所有孩子都带到了学校,并想知道有多少名字以A开头。然后有人再加上10个以A开头的孩子。这是一个并发问题。
你可以从插件中发生坏事,导致你不希望在数据库中发生某些事情。
例如:
约翰的余额为1000美元,他上网支付账单,在此期间交易发生导致他再欠100美元(插入)(总计1100美元)。他全额支付了1000美元,触发了将所有欠款余额设置为0的东西(他支付了我们得到的所有余额,所以我们说啊,让我们把所有东西都设置为0)。这100美元的交易现在已经清算,但实际上没有支付。