如何解決電商網站超賣現象

來源:互聯網
上載者:User

所謂超賣現象舉例:比如某商品的庫存為1,此時使用者1和使用者2並發購買該商品,使用者1提交訂單後該商品的庫存被修改為0,而此時使用者2並不知道的情況下提交訂單,該商品的庫存再次被修改為-1這就是超賣現象。


究其深層原因,是因為資料庫底層的寫操作和讀操作可以同時進行,雖然寫操作預設帶有隱式鎖(即對同一資料不能同時進行寫操作)但是讀操作預設是不帶鎖的,所以當使用者1去修改庫存的時候,使用者2依然可以都到庫存為1,所以出現了超賣現象。

解決方案:

可以對讀操作加上顯式鎖(即在select ...語句最後加上for update)這樣一來使用者1在進行讀操作時使用者2就需要排隊等待了

但是問題來了,如果該商品很熱門並發量很高那麼效率就會大大的下降,怎麼解決。

解決方案:

我們可以有條件有選擇的在讀操作上加鎖,比如可以對庫存做一個判斷,當庫存小於一個量時開始加鎖,讓購買者排隊,這樣一來就解決了超賣現象。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.