偷一张图
共享锁:目前我个人的理解是
共享锁是只读锁,如果一条数据被一个事务加了共享锁的话,那么别的事务就无法对他进行更改的操作。
共享锁是共享的,如果一条数据被加上了共享锁的话,其他的事物也可以再给他上一把共享锁(两把锁锁住同一辆小黄车)只有这两个事务都给他解锁后他才能恢复自由身。
排他锁 与共享锁对立,用来写,无法共享(想想也是,如果一个数据已经被排他锁锁住了,还能被另一个排他锁锁住的话,那么这两个事务就都可以对他进行更改操作了,这显然是不行的)
后续等下更新
lock tables student read;
这张学生表变成只读,而且可以多个事务同时来读,但不能写入(谁都无法写入),否则会提示:
lock tables student write;
试了一下,可读可写,开另一个终端执行读和写的操作都会阻塞(排他锁,独占,为所欲为),直到刚刚那个终端解锁后才执行
unlock tables;
刚刚做了个小实验尝试了一下:
终端一 执行 lock tables student read;
然后执行 select * from student 成功
update student set sex=‘nan’ where id =1; 失败
终端二 执行 select * from student 成功
updata student set sex=‘na’ where id =1 失败
执行 lock tables student read 成功‘
此时终端一执行 unlock tables 成功
update student set sex=‘ba’ where id =1 阻塞,卡住不动;
终端2执行 unlock tables 终端一提示成功