鎖粒度示例

2021-10-12 16:37:35 字數 953 閱讀 3737

準備資料:

-- 建立表並插入資料

create table if not exists `lock_test`(

`id` int unsigned auto_increment,

`name` varchar

(100

) not null

default

'' comment '名字'

, `age` int not null

default

1 comment '年齡'

, primary key ( `id` )

)engine=innodb default charset=utf8;

insert into lock_test (name,age)

values

('test-1',17

),('test-2',18

),('test-3',19

),('test-4',20

),('test-5',21

);

事務b:

// 開啟事務

begin ;

// 對整個表上s鎖

select * from lock_test lock in share mode ;

注意:如果這裡沒有顯式的使用s鎖,那麼其實是不會上鎖的,對於讀已提交和可重複讀兩種事務型別,讀資料時,讀取的都是快照,當然他們讀取快照的時間點不同。

事務a:

// 開啟事務

begin ;

// 要對某一行加x鎖,那麼就先要對錶加ix鎖,而表現在被別人加了s鎖,ix和s不相容,只能等待

update lock_test set id =

14 where id =

4;

控制鎖的粒度

日期 2009年5月3日 翻譯 張洪舉 原文 在sql server 7.0 的所有版本中,引擎可以鎖定行 頁或整個表。此外,即使通過獲取行或頁鎖的方式啟動了查詢,如果獲取了太多的鎖,sql server 也可能會將其提公升到乙個表鎖。每個鎖都需要使用記憶體,所以,當以乙個表鎖公升級替換成千上萬的細...

oracle多粒度鎖機制

1.資料庫鎖的概念 為了確保併發使用者在訪問同一資料庫物件時的正確性 即無丟失修改 可重複讀 不讀 髒 資料 資料庫中引入了鎖機制。基本的鎖型別有兩種 排它鎖 exclusive locks 記 為x 鎖 和共享鎖 share locks記為 s鎖 排它鎖 若事務t對資料d加x鎖,則其它任何事務都不...

Oracle多粒度鎖機制

基本鎖型別有兩種 排他鎖 exclusive locks 記為x鎖 共享鎖 share locks 記為s鎖。排他鎖 若事務t對資料d加x鎖,則其他事務都不能再對d加任何型別的鎖,直至t釋放d上的x鎖 一般要求在修改資料前要向該資料加排他鎖,所以排他鎖又稱為寫鎖。共享鎖 若事務t對資料d加s鎖,則其...