1. 程式人生 > >python 如何解決高並發下的庫存問題??

python 如何解決高並發下的庫存問題??

問題 如何解決 時間 lba 悲觀鎖 font update 方法 llb

python 提供了2種方法解決該問題的問題:1,悲觀鎖;2,樂觀鎖

悲觀鎖:在查詢商品儲存的時候加鎖 select_for_update() 在發生事務的commit或者是事務的rollback時,自動釋放該鎖,這樣其他用戶就可以接著查詢該商品。

樂觀鎖:樂觀鎖不是真正的鎖,在創建訂單之前查詢商品的庫存,在創建訂單詳情表前,update更新查詢數據,如果兩次查詢的庫存量一樣就創建詳情表,並減去庫存,否則,循環三次,如果都不一樣,就發生rollback。

使用場景:並發量高的時候使用悲觀鎖,缺點:加鎖消耗資源

並發量低的時候使用樂觀鎖,缺點:樂觀鎖循環耗費時間。

python 如何解決高並發下的庫存問題??