定义
锁是计算机协调多个进程或线程并发访问某一资源的机制
分类
- 从对数据操作的类型上分:读锁(共享锁)和写锁(排它锁)
读锁(共享锁)
针对同一份数据,多个读操作可以同时进行而不会相互影响。
写锁(排它锁)
当前写操作没有完成前,它会阻断其他写锁和读锁
- 从对数据操作的粒度分:行锁和表锁
手动增加表锁
lock table 表名1 read(write), 表名2 read(write),其他
例子1:
客户端:sesson1,sesson2
sesson1对表1加读锁,则sesson1只能读取表1,而不能对其进行改操作,同时也不能读取其他没有加锁的表,与此同时sesson2可以读取表1,,也可以读取其他的表,但sesson2若对表1进行改操作,则陷入等待状态,直到sesson1释放表1的锁,sesson2才能解除等待状态,操作表1。
例子2:
客户端:sesson1,sesson2
sesson1对表2加写锁,则sesson1可以对表2读和增删改,与此同时sesson2若想读或者增删改表2则陷入等待状态,直至sesson1对表2解除写锁,sesson2才能解除等待状态,操作表2。
总结:读锁会阻塞写,写锁会阻塞读和写
操作
查看表的锁状态:show open tables;