MyISAM表是否会自动锁定每个select或insert语句的表.
我的意思是,如果我以select * from tablename
的形式查询数据库,那么MySQL引擎首先会自动锁定它,并在显示结果后解锁它,还是必须先显式地提到锁表名读取,然后读取数据…?
我对此表示怀疑,因为我们有一个缺少行的数据库,大约每秒钟插入或更新大约50-100行。在插入或更新时,我们从不使用lock语句,并且仍然没有出现任何并发问题。
发布于 2013-12-04 17:30:24
MyISAM只锁定插入、更新和删除(a.k.a )。( DML)
(这些问题每次都会发出完整的表锁(请参阅关于锁定粒度的MyISAM文档)。
选择get被这些语句阻塞。
例外是带有并发性的INSERT。
您可能需要检查应用程序是否有连接失败或DML失败。
发布于 2013-12-04 23:33:39
另外,在MySQL默认日志(如mysqld.log、慢速查询日志、二进制日志记录)中可以找到很好的信息,在执行查询‘显示状态’之后,变量(Table_locks_waited)将指示是否存在并发问题。
https://dba.stackexchange.com/questions/54426
复制相似问题