1. 程式人生 > 資料庫 >redis秒殺

redis秒殺

資料庫為何要併發控制?
資料庫是共享資源,通常有多個事務同時執行。當多個事務併發地存取資料庫時就會產生同時讀取/修改同一資料的情況。若對併發操作不加控制就可能會存取和儲存不正確的資料,破壞資料庫的一致性。所以資料庫要提供併發控制機制

併發操作可能會產生哪幾類資料不一致?
丟失修改:兩個事務T1和T2讀入同一資料並修改,T2提交的結果破壞了T1提交的結果,導致T1的修改被丟失
不可重複讀:事務T1讀取資料後,事務2執行更新操作,使T1無法再現前一次讀取結果
讀髒資料:事務T1修改某一資料,將其寫回磁碟,事務2讀取統一資料後,T1 由於某種原因被撤銷,這時T1已修改的資料恢復原值,2讀到的資料就與資料庫中的資料不一致。

併發控制實現方式:
封鎖技術,也可採用時間戳方法,例如分散式資料庫系統
封鎖就是事務在對某個資料物件例如表、記錄等操作之前,先向系統發初請求,對其加鎖。加鎖後事務就對該資料物件有了一定控制,在事務釋放鎖之前,其他事務不能更新此資料物件。
排他鎖(x鎖級寫鎖),事務T加鎖後,可讀可改,但其他事務不行
共享鎖(S鎖即讀鎖),事務T加鎖後,可讀,其他事務可加S鎖,可讀