MySQL中InnoDB鎖的介紹及用途

2021-10-03 08:04:36 字數 1472 閱讀 6561

讀這篇文章之前可以先了解一下mysql中innodb資料結構

事務隔離級別

髒讀不可重複讀

幻讀讀未提交(read-uncommitted)

可能可能

可能不可重複讀(read-committed)

不可能可能

可能可重複讀(repeatable-read)

不可能不可能

innodb不可能

序列化(serializable)

不可能不可能

不可能隔離級別到底如何實現?

1、表鎖、行鎖

2、innodb鎖型別

select

*from teachers where id=

1lock

inshare

mode

;commit

/rollback

delete

/update

/insert 預設加上x鎖 select

*from table_name where..

.for

update

commit

/rollback

意向鎖(is、ix)是innodb資料操作之前自動加的,不需要使用者干預,當事務想去進行鎖表時,可以先判斷意向鎖是否存在,存在時則可快速返回該錶不能 啟用表鎖innodb行鎖到底鎖了什麼1、髒讀問題同一條資料被事務a查詢,又被事務b修改資料,那麼防止事務a讀到事務b未提交的髒資料,我們就給事務b修改的資料加上排它鎖(x鎖):exclusive locks進行的鎖定,防止事務a出現髒讀。

2、不可重複讀問題

同一條資料需要被事務a多次查詢,其中又被事務b修改資料,那麼防止事務a在第二次讀取資料不一致,我們就給事務a讀取的資料加共享鎖(s鎖):shared locks進行的鎖定,防止事務a出現不可重複讀。

3、幻讀問題

當事務a需要多次查詢乙個範圍資料時,其範圍中又被事務b新增或者刪除資料,防止事務a在第二次讀取範圍資料不一致,我們就給事務a讀取的範圍資料加上臨鍵鎖 next-key,防止事務a出現幻讀。

1、死鎖介紹

2、死鎖的避免

Mysql中InnoDB引擎的鎖

鎖這種機制的作用 對共享資源併發訪問的管理,保證資料的完整性和一致性。在資料庫中,lock與latch都可以被稱為 鎖 但是兩者的含義是完全不同的。lock針對的物件是事務,它用來鎖定資料庫中的物件,如表 頁 行。一般lock的物件僅在事務commit或者rollback後進行釋放,並且lock是有...

mysql中InnoDB中的各種鎖

一種分類方式 行鎖 索引上鎖 表鎖 表上鎖 一種分類方式 共享鎖 以及獲取前先獲取意向共享鎖 lock in share model 排它鎖 以及獲取前先獲取意向排它鎖 for update 一種分類方式 該分類前提 命中索引 記錄鎖 單條行鎖 間隙鎖 無記錄時候的臨鍵鎖退化為間隙鎖 臨鍵鎖 查詢範...

mysql中innodb引擎的行鎖

一 資料庫引擎 mysql常用的資料庫引擎也就是myisam和innodb兩種,相比較起myisam而言innodb支援了事務 外來鍵等功能,具有更好的併發性支援,所以在大併發的情況的下我們一般選擇的是innodb來作為我們的資料庫儲存引擎,而myisam相較innodb的執行效能上會有更好的表現,...