求你了,別再說資料庫鎖的只是索引了!!!

MC811-MM118發表於2021-12-13

在MySQL資料庫中,為了解決併發問題,引入了很多的鎖機制,很多時候,資料庫的鎖是在有資料庫操作的過程中自動新增的。
所以,這就導致很多程式設計師經常會忽略資料庫的鎖機制的真正的原理。比如,我經常在面試中會問候選人,

你知道MySQL Innodb的鎖,到底鎖的是什麼嗎?

Record Lock?
Record Lock,翻譯成記錄鎖,是加在索引記錄上的鎖。

SELECT c1 FROM t WHERE c1 = 10 For UPDATE;
會對c1=10這條記錄加鎖,為了防止任何其他事務插入、更新或刪除c1值為10的行。

求你了,別再說資料庫鎖的只是索引了!!!

需要特別注意的是,記錄鎖鎖定的是索引記錄。即使表沒有定義索引,InnoDB也會建立一個隱藏的聚集索引,並使用這個索引來鎖定記錄。
Gap Lock,翻譯成間隙鎖,他指的是在索引記錄之間的間隙上的鎖,或者在第一個索引記錄之前或最後一個索引記錄之後的間隙上的鎖。

歡迎交流!!
最近抖音上有這個“一元盲盒交友”“盲盒脫單”“盲盒微信”,於是我開發了。各位看官,目前已經在運營,歡迎吐槽!

本作品採用《CC 協議》,轉載必須註明作者和本文連結
談笑有鴻儒,往來無白丁!

相關文章