MySql中鎖與索引的注意點

2022-09-04 05:51:08 字數 630 閱讀 5103

聚集索引(主鍵索引)

非聚集索引(

非主鍵索引)

覆蓋索引

(多欄位索引)

種類:讀鎖(共享鎖)、寫鎖(排他鎖)、更新鎖、樂觀鎖、悲觀鎖

級別:頁級、表級、行級

myisam 運算元據都是使用表級鎖,myisam總是一次性獲得所需的全部鎖,要麼全部滿足,要麼全部等待。所以不會產生死鎖,但是由於每操作一條記錄就要鎖定整個表,導致效能較低,併發不高。

innodb 與 myisam 的最大不同有兩點:一是 innodb 支援事務;二是 innodb 採用了行級鎖。也就是你需要修改哪行,就可以只鎖定哪行。

在mysql中,行級鎖並不是直接鎖記錄,而是鎖索引。innodb 行鎖是通過給索引項加鎖實現的,索引分為主鍵索引和非主鍵索引兩種,如果一條sql 語句操作了主鍵索引,mysql 就會鎖定這條主鍵索引;如果一條語句操作了非主鍵索引,mysql會先鎖定該非主鍵索引,再鎖定相關的主鍵索引。如果沒有索引,innodb 會通過隱藏的聚簇索引來對記錄加鎖。也就是說:如果不通過索引條件檢索資料,那麼innodb將對錶中所有資料加鎖,實際效果跟表級鎖一樣。

mysql鎖與索引

當走索引就是使用行鎖,當索引失效就會使用表鎖 對索引使用一下操作導致索引失效 預先關閉自動提交事務功能 set autocommit 0 視窗a執行更新語句,當前事務對其他食物不可見 已提交讀 update test innodb lock set b a1 where a 1 select fro...

MySQL索引與鎖的機制 五 鎖

一般情況下,沒有用鎖。資料庫隱式加了 表鎖 對整個表 加鎖,開銷小,加鎖快 不會出現死鎖,鎖定粒度大 發生鎖衝突概率高,併發度底 表鎖分兩種 行鎖 對 某一行 加鎖,開銷大,加鎖慢,會出現死鎖 鎖定 粒度小 發生鎖衝突的概率底,併發度高 innodb 支援行鎖 和 表鎖,其中行鎖是 基於索引 的,只...

MySQL中的索引和鎖

索引常見的幾種型別 索引常見的型別有雜湊索引,有序陣列索引,二叉樹索引,跳表等等。在建表的時候我們可能會新增多個索引,而inndb會為每個索引建立乙個b 樹進行儲存索引,假如我們在建表的時候建立了乙個主鍵索引和普通索引,那麼這時候inndb會為我們建立兩個b 索引樹 乙個是主鍵的聚簇索引,另乙個是普...