- 併發處理
- 當多個連線對記錄進行修改時保證資料的一致性和完整性
-
為什麼要用到併發控制
- 假設我們的資料庫中存在著商品的記錄,現在有兩個使用者進行登陸,假設一個使用者要刪除id為22的記錄,一個使用者要讀取id為22的記錄,那麼會發生什麼樣的結果呢,結果可能是正在讀取資訊的使用者報錯而退出,也可能是他會得到一條和實際資訊不符的資訊。所以這個時候我們就需要用到併發控制了
- 怎麼 處理併發問題
- 在處理併發讀和併發寫的時候,系統會使用一套鎖系統來解決這個問題
- 什麼是鎖系統
- 鎖系統由兩類鎖來組成
- 共享鎖(讀鎖)
讀鎖是共享的互不阻塞的,在同一段時間內,多個使用者可以讀取同一個資源,讀取過程中資料不會發生任何變化 - 排它鎖(寫鎖)
寫鎖是排他的,在任何時候都只能有一個使用者寫入資源,當進行寫鎖時會阻塞其它的讀鎖或者寫鎖操作
- 共享鎖(讀鎖)
- 鎖系統由兩類鎖來組成
-
鎖的粒度
-
鎖的粒度就是mysql鎖定時的單位,根據單位可以分為兩種
-
表鎖,是一種開銷最小的鎖策略。使使用者得到資料表的寫鎖(禁止其他使用者進行讀寫,只有一個鎖,鎖定了整張表)
當鎖為表鎖時,一個使用者訪問了一張表,那麼其它使用者都不能訪問這張表 - 行鎖,是一種開銷最大的鎖策略。使使用者得到特定行的寫鎖,並行性最大(有多少條記錄,就可能對多少條記錄進行了行鎖)
當鎖為行鎖時,使用者訪問資料表的特定行,比如第一行,那麼第一行就不能被其它使用者訪問,其它使用者只能訪問除了第一行以外的行
-
-