您的位置:首页 > 数据库 > MySQL

mysql里面的伪事务-----MyISAM存储引擎的锁机制

2017-07-17 22:13 417 查看
在Mysql数据库里面存在了好几个存储引擎,其中有的存储引擎是支持事务管理,例如InnoDB,但是有的存储引擎是不支持事务管理,例如MyISAM存储引擎。如果用户在创建表的时候选择的存储引擎是MyISAM,用户可以选择应用表锁来代替事务,这种使用表锁来代替事务的事件被称为伪事务。表锁分为读锁(read)和写锁(write)。

首先先给一张表添加一个读锁lock table 表名 read,截图如下:



此时user表的read锁已经加好了,现在我们往user表里面插入一条记录如下,会报错,截图如下:



但是如果我把read锁释放掉就可以了,截图如下:



于是我们可以得出结论,给表添加read锁,就不能对表进行添加,删除,修改等操作,但是可以对表进行查询。

其次给一张表添加一个写锁lock table 表名 write,截图如下:



此时在该用户下查询是本可以的,但是你重新打开一个窗口就不行了,一直在等待状态,截图如下:



一旦在第一个窗口里面把这个write锁释放掉以后,第二个窗口的查询结果立马就出来了,截图如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息