簡述各種鎖

2022-07-28 17:00:21 字數 775 閱讀 4408

樂觀鎖

​ 樂觀鎖,訪問資料時不提前加鎖,也就是說在乙個使用者在修改資料未進行提交的時候,其他人檢視其資料可以看到他未提交資料。若他的操作進行了回滾那麼另乙個看到的資料就為幻讀。

悲觀鎖

​ 悲觀鎖,在乙個使用者讀取資料未進行提交時,其他客戶查詢看到的是其原有資料,也沒有辦法對其資料進行修改。只有在使用者提交後,其他使用者才可以看到其修改後資料。

排他鎖

​ 保證在多事務操作時,資料的一致性。

共享鎖

​ 保證在多事務工作期間,資料查詢時不會被阻塞。

事務的特性:

1. 原子性:事務被執行看做乙個整體,要麼都成功,要麼都失敗

2. 一致性:資料庫的狀態從乙個一致的狀態變成另乙個一致的狀態

3. 隔離性:多個事務併發,乙個事務執行不影響其他事務的執行

4. 永續性:事務一旦被提交,對資料庫的修改就是永久性的

資料庫的隔離級別:

1. 讀未提交   read  uncommitted

2. 讀已提交   read  committed

3. 可重複讀   repeatable reads

4. 可序列化   serialzable

mvcc機制:就相當於 樂觀鎖+共享鎖+排他鎖

簡述樂觀鎖和悲觀鎖

樂觀鎖和悲觀鎖都是一種思想,並不是真實存在於資料庫中的一種機制。當認為資料被併發修改的機率比較大,需要在修改之前借助於資料庫鎖機制,先對資料進行加鎖的思想被稱為悲觀鎖,又稱pcc pessimistic concurrency control 在效率方面,處理鎖的操作會產生了額外的開銷,而且增加了死...

MySQL 鎖機制簡述

1 只有通過索引條件檢索資料,innodb才使用行級鎖,否則,innodb 將使用表鎖。2 由於mysql的行鎖是針對索引加的鎖,不是針對記錄加的鎖,所以雖然是訪問不同行的記錄,但是如果是使用相同的索引鍵,是會出現鎖衝突的。3 當表有多個索引的時候,不同的事務可以使用不同的索引鎖定不同的行,另外,不...

各種鎖概述

重量級鎖 程序或者執行緒想訪問某個資源,如果沒有執行緒訪問,則占有這個資源,且加上鎖,等用完之後再釋放掉鎖。如果這個資源被其他執行緒占有,就會堵塞,直到其他執行緒讓出該資源並喚醒該執行緒。自旋鎖 把執行緒從執行態轉為阻塞態,會儲存上下文,涉及到核心態到使用者態的轉換,非常浪費時間,被其他執行緒喚醒,...