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获得锁,查询或插入操作完成 |
简而言之,就是读锁会阻塞写,但是不会阻塞读,而写锁会把读和写都阻塞。
上一篇: MySQL存储引擎:MyISAM & InnoDB
下一篇: java功能jsp实战