2017-08-14 39 views

回答

2

如果在查询读取表时修改了表,则读取查询可能会返回不正确的结果。为防止出现这种情况,MyISAM使用锁*来防止其他线程从该表中读取时写入表。这个锁并不妨碍其他读取查询,但是 - 任何数量的线程都可以共享该锁。

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

+0

Thanks.But我无法找到正式手册上的读锁(当查询数据时)的信息。它是一个SQL标准吗? – macc

+0

SQL标准并不讨论实现的怪癖,就像MyISAM需要表锁来实现其黑暗魔法一样。老实说,MyISAM实际上并不值得使用,因为这样的事情,它是一个足以满足MySQL 1.0的引擎,但已经过时了现代标准。尽可能使用InnoDB。它支持事务处理,在服务器崩溃的情况下可以安全地回滚日志等等。 – tadman

+0

嗯,你的意思是我们找不到关于myisam读锁的官方上下文(即使myisam引擎的信息很少)。我应该放弃使用myisam引擎。 – macc

相关问题