Mysql併發控制 鎖的使用

2021-09-24 17:54:38 字數 1442 閱讀 5079

建表

create tablemylock(idint (11) not null auto_increment,namevarchar (20) default null, primary key (id`)

);insert into mylock (id,name) values (1, 『a』);

insert into mylock (id,name) values (2, 『b』);

insert into mylock (id,name) values (3, 『c』);

insert into mylock (id,name) values (4, 『d』);`

read鎖

session1

lock table mylock read 給表加讀鎖 (1)

select * from mylock 查詢表資料,正常 (2)

update mylock set name = 『e』 where id = 1 無法進行操作 (4)

unlock tables 釋放鎖 (6)

update mylock set name = 『e』 where id = 1 無法進行操作 (7)正常更新

session2

select * from mylock 查詢表資料,正常 (3)

update mylock set name = 『e』 where id = 1 無法進行操作 (5)

update mylock set name = 『e』 where id = 1 正常更新(8)

write鎖

session1

lock table mylock write 給表加寫鎖 (1)

select * from mylock where id = 1 查詢正常操作 (2)

update mylock set name = 『f』 where id = 1 更新正常操作 (4)

unlock tables 釋放鎖 (6)

session2

select * from mylock where id = 2 無法進行操作 (需要換成不同的id,mysql自帶了快取) (3)

update mylock set name = 『f』 where id = 2 無法進行操作 (5)

select * from mylock where id = 2 查詢正常操作 (7)

update mylock set name = 『f』 where id = 1 更新正常操作 (8)

總結表共享讀鎖,顧名思義,讀取資料session都能select,鎖不釋放的情況下,表沒法進行更新和新增。

表獨佔寫鎖,佔據鎖的session可以對錶進行 update,insert,select操作。鎖不釋放的情況下,其他session沒法進行表進行操作。

Mysql鎖機制與併發控制

鎖是計算機協調多個程序或純執行緒併發訪問某一資源的機制。在資料庫中,除傳統的計算資源 cpu ram i o 的爭用以外,資料也是一種供許多使用者共享的資源。如何保證資料併發訪問的一致性 有效性是所在有資料庫必須解決的乙個問題,鎖衝突也是影響資料庫併發訪問效能的乙個重要因素。從這個角度來說,鎖對資料...

mysql 併發控制 mysql併發控制

mysql併發控制 當有多個查詢需要同時修改同乙個資料,就會產生併發控制的問題。mysql可以在兩個層面進行併發控制 伺服器層和儲存引擎層。mysql通過加鎖實現併發控制 鎖有兩類 讀鎖 共享鎖,即乙個讀鎖不會阻塞其它讀鎖,多個使用者可同時讀取同乙個資源,而不互相干擾。寫鎖 排他鎖,即乙個寫鎖會阻塞...

MySQL併發控制之讀寫鎖和鎖粒度詳解

無論何時,只要有多個查詢需要在同一時刻修改資料,都會產生併發控制的問題。本章的目的是討論mysql在兩個層面的併發控制 伺服器層與儲存引擎層。併發控制是 乙個內容龐大的話題,有大量的理 獻對其進行過詳細的論述。本章只簡要地討論 mysql如何控制併發讀寫,因此讀者需要有相關的知識來理解本章接下來的內...