mysql锁
大家肯定都会比较了解乐观锁和悲观锁的概念,而在mysql锁篇,我们对乐观锁就不多做赘述了,因为在redis篇的时候,会大量、详细的来说一说乐观锁的东西!
悲观锁,在mysql中又分为表级锁和行级锁!
表级锁
1:表锁
2:元数据锁
3:意向锁
表锁
这个玩意是手动开启关闭的!!!!!!!!!!!!!!!!!!
手动增加表锁:
lock table 表名称 read(write);
查看表锁情况:
show open tables;
删除表锁:
unlock tables;
这里的表锁,是在mysql layer层,手动开启、关闭的,可以人为控制的,当然,这种就基本用不到了
对于表锁之间的关系(共享读,排他写):
1:加读锁之后,可以继续加读锁,但是不能加写锁
2:加写锁之后不能加读锁和写锁
手动加读锁之后的现象:
1:sessionA 为A表加读锁
2:sessionA可读A表数据、不可修改A表数据,不可读B表数据,更不可操作B表数据
3:sessionB可读A表数据,修改A表数据会产生阻塞(此处是因为它自动要加行写锁,所以阻塞了)
4:sessionA释放锁之后,sessionB的修改成功,sessionA也就可以访问别的表了
手动加写锁之后的现象:
1:sessionA 为A表加写锁
2:sessionA可读A表数据、可以修改A表数据,不可读B表数据,更不可操作B表数据
3:sessionB读A表数据,产生阻塞
4:sessionA释放锁之后,sessionB的查询成功,sessionA也就可以访问别的表了
<