關於樂觀鎖與悲觀鎖

2021-09-25 03:30:24 字數 511 閱讀 2662

很多時候我們提起併發問題,所擔心的就是超賣和資料一致性等,如何解決這種問題也是眾開發人員一直以來所思考的,目前首先提到的就是悲觀鎖與樂觀鎖!

首先需要了解的是,悲觀鎖與樂觀鎖其實不是mysql的鎖,和我們說的行鎖表鎖不是乙個東西,而是兩個概念

悲觀鎖:在併發中,出於悲觀的想法,認為所有操作會相互影響資料,因此我們在需要操作時需要排隊,每次只有1個請求能操作表,這個可以使用表鎖來實現,因為是表鎖,效率低!

樂觀鎖:在併發中,出於樂觀想法,認為所有運算元據不會相互影響,所以我們不限制操作,直到要更新操作時.樂觀鎖一般使用版本對比來實現.例如:我們增加某個字段a,我們更新前獲取乙個a的值是v,更新時對比這個a的值是否依然是v,如果變化了,說明有其他人修改過,直接拒絕此次操作,返回給使用者,讓使用者重試

注意:樂觀鎖中的操作需要具有原子性,必須處於同乙個事務中

這是我的簡單理解,有不對的地方,感謝指正!

關於鎖(悲觀鎖與樂觀鎖)

鎖 locking 業務邏輯的實現過程中,往往需要保證資料訪問的排他性。如在金融系統的日終結算 處理中,我們希望針對某個 cut off 時間點的資料進行處理,而不希望在結算進行過程中 可能是幾秒種,也可能是幾個小時 資料再發生變化。此時,我們就需要通過一些機 制來保證這些資料在某個操作過程中不會被...

悲觀鎖與樂觀鎖

悲觀鎖與樂觀鎖 悲觀鎖 pessimistic locking 顧名思義就是採用一種悲觀的態度來對待事務併發問題,我們認為系統中的併發更新會非常頻繁,並且事務失敗 了以後重來的開銷很大,這樣以來,我們就需要採用真正意義上的鎖來進行實現。悲觀鎖的基本思想就是每次一 個事務讀取某一條記錄後,就會把這條記...

樂觀鎖與悲觀鎖

悲觀鎖 pessimistic locking 顧名思義就是採用一種悲觀的態度來對待事務併發問題,我們認為系統中的併發更新會非常頻繁,並且事務失敗了以後重來的開銷很大,這樣以來,我們就需要採用真正意義上的鎖來進行實現。悲觀鎖的基本思想就是每次乙個事務讀取某一條記錄後,就會把這條記錄鎖住,這樣 其它的...