1. 程式人生 > >MySQL表共享讀鎖(Table Read Lock)和表獨佔寫鎖(Table Write Lock)

MySQL表共享讀鎖(Table Read Lock)和表獨佔寫鎖(Table Write Lock)

       -- 表鎖
-- 檢視哪些表被鎖
show open TABLES
-- 建立一個張表演示表鎖,使用myisam儲存引擎
CREATE table test_lock(
id int,
name VARCHAR(255)
)engine myisam;


-- 給表加鎖讀
lock table test_lock READ;
-- 會阻塞自己和其他使用者的update操作
insert into test_lock(id,name)VALUES(2,'liyue');
update test_lock set name='l' where id=1;
SELECT * from test_lock;


-- 解鎖
UNLOCK TABLES;


-- 給表加獨佔寫鎖
lock table test_lock WRITE;
-- 會阻塞其他使用者的update操作,對自己update後沒有釋放鎖的情況下
-- 只能在當前視窗檢視不可開啟一個新的視窗要不會視為一個新的session,由於鎖被佔用而無法檢視
update test_lock set name='fi' where id=1;
SELECT * from test_lock;