MySQL中的共享鎖與排他鎖

2021-07-25 22:48:44 字數 1015 閱讀 5682

共享鎖又稱讀鎖,是讀取操作建立的鎖。其他使用者可以併發讀取資料,但任何事務都不能對資料進行修改(獲取資料上的排他鎖),直到已釋放所有共享鎖。

如果事務t對資料a加上共享鎖後,則其他事務只能對a再加共享鎖,不能加排他鎖。獲准共享鎖的事務只能讀資料,不能修改資料。

select ... lock in share mode;

在查詢語句後面增加lock in share mode,mysql會對查詢結果中的每行都加共享鎖,當沒有其他執行緒對查詢結果集中的任何一行使用排他鎖時,可以成功申請共享鎖,否則會被阻塞。其他執行緒也可以讀取使用了共享鎖的表,而且這些執行緒讀取的是同乙個版本的資料。

排他鎖又稱寫鎖,如果事務t對資料a加上排他鎖後,則其他事務不能再對a加任任何型別的封鎖。獲准排他鎖的事務既能讀資料,又能修改資料。

select ... for update;

在查詢語句後面增加for update,mysql會對查詢結果中的每行都加排他鎖,當沒有其他執行緒對查詢結果集中的任何一行使用排他鎖時,可以成功申請排他鎖,否則會被阻塞。

意向鎖是表級鎖,其設計目的主要是為了在乙個事務中揭示下一行將要被請求鎖的型別。innodb中的兩個表鎖:

意向共享鎖(is):表示事務準備給資料行加入共享鎖,也就是說乙個資料行加共享鎖前必須先取得該錶的is鎖

意向排他鎖(ix):類似上面,表示事務準備給資料行加入排他鎖,說明事務在乙個資料行加排他鎖前必須先取得該錶的ix鎖。

意向鎖是innodb自動加的,不需要使用者干預。

對於insert、update、delete,innodb會自動給涉及的資料加排他鎖(x);對於一般的select語句,innodb不會加任何鎖,事務可以通過以下語句給顯示加共享鎖或排他鎖。

共享鎖:select ... lock in share mode;

排他鎖:select ... for update;

mysql排他鎖 mysql共享鎖與排他鎖

mysql鎖機制分為表級鎖和行級鎖,本文就和大家分享一下我對mysql中行級鎖中的共享鎖與排他鎖進行分享交流。共享鎖又稱為讀鎖,簡稱s鎖,顧名思義,共享鎖就是多個事務對於同一資料可以共享一把鎖,都能訪問到資料,但是只能讀不能修改。排他鎖又稱為寫鎖,簡稱x鎖,顧名思義,排他鎖就是不能與其他所並存,如乙...

MySQL 共享排他鎖 mysql 共享排他鎖

1 基礎知識 共享鎖又叫s鎖 share locks 共享鎖就是多個事務對於同一資料可以共享一把鎖,都能訪問到資料,但是只能讀不能修改。排他鎖又叫x鎖 exclusive locks,記為x鎖 排他鎖就是不能與其他鎖並存,只有等待鎖釋放完成以後其他事務才能得到鎖。下面是共享鎖與排他鎖的互斥關係 s ...

MySQL中的共享鎖與排他鎖

在mysql中的行級鎖,表級鎖,頁級鎖中介紹過,行級鎖是mysql中鎖定粒度最細的一種鎖,行級鎖能大大減少資料庫操作的衝突。行級鎖分為共享鎖和排他鎖兩種,本文將詳細介紹共享鎖及排他鎖的概念 使用方式及注意事項等。共享鎖 share lock 共享鎖又稱讀鎖,是讀取操作建立的鎖。其他使用者可以併發讀取...