mysql 存储引擎 之 MyISAM 表锁

一、MyISAM 表级锁的锁模式

       MyISAM 的表级锁有2种模式,分别为:表共享读锁 和 表独占写锁。

表共享读锁:当开启事务A 获取表共享读锁, 则其他新开启事务只能读取数据,不能对操作的同张表进行更新或者插入操作,删除操作,

表独占写锁:当开启事务A 获取独占写锁,则其他新开启的事物 读取,新增,修改,删除 等操作会处于阻塞状态, 只到 事务A 主动释放锁。

下面来通过一个事例来验证此过程:

例如:

1、获取读锁 :lock table user read;  此时锁住的是整张表,在锁释放之前,本事务和其他事务则无法执行更新,修改和插入操作。只可正常执行查询语句;只到执行 unlock tables; 命令释放锁才可进行进行增,删,改操作

mysql 存储引擎 之 MyISAM 表锁

2、获取写锁:lock table user write ;  当事务A 获得写锁后,则事务A 可正常查询数据,可删除,可修改数据,但无法新增数据;

mysql 存储引擎 之 MyISAM 表锁

事务B:

mysql 存储引擎 之 MyISAM 表锁

二、MyISAM 表级锁的争用情况

myISAM 存储引擎只支持表锁,可通过 show status like 'tables%'; 命令来 查看 mysql 内部表级锁定的情况:

mysql 存储引擎 之 MyISAM 表锁