訂單系統:先減庫存還是先下訂單


答案是先下單再減庫存

以 MySQL 作為 DB 為例,下訂單就是 insert,在使用索引的情況下,insert 插入是行級鎖,支持每秒 4W 的並發。減庫存就是 update 操作,命中索引時也是行級鎖,但是這是個獨占鎖,所有的操作都要等待前一個釋放鎖后才能繼續 update。

問題就在這里,根據 MySQL 兩段鎖協議,我們應該把熱點操作放到離 commit 近的位置,這樣可以減少行級鎖的持有時間!自然處理效率就更好一些。

事務begin ---> insert ---> 其他操作 ---> update ---> 事務commit


免責聲明!

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



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