mysql锁-MyISAM存储引擎

使用两个客户端进行模拟两个session

首先创建表 mylock 并插入两条数据

加锁命令

mysql> lock table mylock read;

解锁命令

mysql> unlock tables;

加read锁(共享锁)锁之后当前session和其他session对数据库的操作影响

session-1 session-2(其他session)
对mylock进行锁定 连接终端
当前session可以查询该表记录 其他session也可以查询该表记录
当前session不可以查询其他没有锁定的表 其他session可以查询其他没有锁定的表
当前session中插入或更新锁定的表都会提示错误 其他session插入或更新锁定的表会一直等待获得锁
释放锁 其他session获得锁,插入操作完成

加write锁(写锁)锁之后当前session和其他session对数据库的操作影响

session-1 session-2(其他session)
对mylock进行锁定 连接终端
当前session可以查询,更新该表都可以执行 其他session查询或插入或更新锁定的表会一直等待获得锁
释放锁 其他session获得锁,查询或插入操作完成
简而言之,就是读锁会阻塞写,但是不会阻塞读,而写锁会把读和写都阻塞。

猜你喜欢

转载自blog.csdn.net/qq_37791322/article/details/81662353