欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql锁-MyISAM存储引擎

程序员文章站 2022-06-01 22:44:04
...

使用两个客户端进行模拟两个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获得锁,查询或插入操作完成
简而言之,就是读锁会阻塞写,但是不会阻塞读,而写锁会把读和写都阻塞。