为什么mysql在选择数据时会向myisam引擎表添加读锁?

时间:2017-08-14 07:04:19

标签: mysql locking myisam

为什么mysql在选择数据时会向myisam引擎表添加读锁?

在官方手册中,它只提到innodb有一个默认隔离。我们知道myisam引擎不支持transaction.But为什么mysql会在选择表中添加一个读锁?

1 个答案:

答案 0 :(得分:2)

如果在查询从中读取表时修改了表,则读取查询可能会返回不正确的结果。为了防止这种情况,MyISAM使用锁*来防止在从该表读取任何其他线程时对表进行写操作。但是,此锁定不会阻止其他读取查询 - 任意数量的线程都可以共享锁定。

在查询写入时,表也会被锁定。这使用不同类型的锁来防止在该表上发生任何其他写入或读取