簡體   English   中英

具有sql性能或准確性問題的Web事務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM