MySQL防止庫存超賣方法總結


訂單超賣問題是涉及到庫存項目的重中之重,這里我總結一下常用的方法

1、簡單處理【update & select 合並】(樂觀鎖)

beginTranse(開啟事務)
$num = 1;
try{ $dbca->query('update s_store set amount = amount - $num where amount>=$num and postID = 12345'); }catch($e Exception){ rollBack(回滾) } commit(提交事務)

還有一種就是加版本號【先select 后 update】

$db->query('update s_store set amount = amount - $num,version = version+1 where version=$version and postID = 12345');

 個人更推薦合並的那個

場景:適用於小型應用並發小

2、使用redis隊列

點擊這里查看具體代碼

場景:大型應用高並發

 

總結:以上就是最常見的解決方案,當然也有其他的一些方式,看了后發現還是這兩種更合適,以上兩種方案足以解決正常的各種情況


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM