2011年618京東事件能夠看出來,高併發對服務器壓力仍是很是大的,京東去年618最後仍是經過延長事件來解決,可是這次蘇寧策劃好像並不是借鑑這次事故的經驗,發生了同樣的問題,記得不錯的話,taobao也發生過同樣的事情、12306購票也被罵死,,因此在策劃方案中要充分考慮此種特殊狀況下該怎麼辦預案...mysql
那些場景屬於秒殺業務?sql
對於悲觀鎖的概念解釋主要有兩種,但本質上悲觀鎖主要用於數據庫訪問的併發控制上。數據庫
悲觀鎖是指對數據被外界(包括本系統當前的其餘事務,以及來自外部系統的事務處理)修改持保守態度,所以,在整個數據處理過程當中,將數據處於鎖定狀態,在悲觀鎖的狀況下,爲了保證事務的隔離性,就須要一致性鎖定讀。讀取數據時給加鎖,其它事務沒法修改這些數據。修改刪除數據時也要加鎖,其它事務沒法讀取這些數據。緩存
在關係數據庫管理系統裏,悲觀併發控制(又名「悲觀鎖」,Pessimistic Concurrency Control,縮寫「PCC」)是一種併發控制的方法。它能夠阻止一個事務以影響其餘用戶的方式來修改數據。若是一個事務執行的操做都某行數據應用了鎖,那只有當這個事務把鎖釋放,其餘事務纔可以執行與該鎖衝突的操做。安全
悲觀鎖處理流程服務器
悲觀鎖優勢架構
悲觀鎖缺點併發
在關係數據庫管理系統裏,樂觀併發控制(又名「樂觀鎖」,Optimistic Concurrency Control,縮寫「OCC」)是一種併發控制的方法。它假設多用戶併發的事務在處理時不會彼此互相影響,各事務可以在不產生鎖的狀況下處理各自影響的那部分數據。在提交數據更新以前,每一個事務會先檢查在該事務讀取數據後,有沒有其餘事務又修改了該數據。若是其餘事務有更新的話,正在提交的事務會進行回滾。樂觀事務控制最先是由孔祥重(H.T.Kung)教授提出。memcached
相對於悲觀鎖,在對數據庫進行處理的時候,樂觀鎖並不會使用數據庫提供的鎖機制。通常的實現樂觀鎖的方式就是記錄數據版本高併發
優勢與不足
樂觀併發控制相信事務之間的數據競爭(data race)的機率是比較小的,所以儘量直接作下去,直到提交的時候纔去鎖定,因此不會產生任何鎖和死鎖。但若是直接簡單這麼作,仍是有可能會遇到不可預期的結果,例如兩個事務都讀取了數據庫的某一行,通過修改之後寫回數據庫,這時就遇到了問題。
樂觀鎖實現流程
保證三步操做原子性
手把手實現核心服務