锁是计算机协调多个进程或线程并发访问某一个资源的机制
1.创建表:
2.如何给增加表锁:
3.如何释放表锁:
4-1.案例模拟(读锁):
总结:给表加读锁时,对应的session给表加读锁之后,可以查询该表的数据,但是不能更新该表的数据,也不能查询其他没有加锁的表,其他的session能查询加锁表和查询和更新其他的未锁定的表的数据,但更新加锁表的数据操作会阻塞,直到对应的表解锁才能继续执行。
4-2.案例模拟(写锁):
总结:给表加写锁时,对应的session给表加读锁之后,可以查询和更新该表的数据,但是不能查询其他的表,其他的session能查询其他的表的数据,但是对于锁定的表不能执行查询和更新操作,将会被阻塞,需要等待锁被释放。
5.案例结论:
MyISAM存储引擎在执行查询前,会自动给涉及的所有表加读锁,在执行更新数据操作的前,会自动给涉及的表加写锁。MySQL的表级锁有两种模式:一种是表共享读锁,另外一种是表独占写锁。
对于MyISAM对表进行的操作,会有以下情况:
1、对MyISAM表的读操作(加读锁) ,不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其它进程的写操作。
2、对MyISAM表的写操作(加写锁) ,会阻塞其他进程对同一表的读和写操作,只有当写锁释放后,才会执行其它进程的 读写操作
简而言之,就是读锁会阻塞写,但是不会堵塞读。而写锁则会把读和写都堵塞