[英]web transactions having sql performance or accuracy issue
這是故事:
當在同一帳戶中有2個並發取款$ 10且該帳戶總共只有$ 10時。
結果:兩次提款均成功,帳戶余額為-$ 10。
如果我進行如下查詢:
UPDATE table
SET amount = amount - 10
WHERE (amount-10 > 0) AND id = 123;
這將是安全和准確的,只有一次提款會成功。
由於無法編制索引數量,是否會出現性能問題?
將查詢寫為:
UPDATE table
SET amount = amount - 10
WHERE amount > 10;
然后可以使用索引。 我確實認為您應該僅將update
限制為給定帳戶:
UPDATE table
SET amount = amount - 10
WHERE account = @account AND amount > 10;
然后,可以始終使用account
索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.