我在桌子上执行SELECT时是否锁定了表格?

时间:2011-10-21 14:49:55

标签: mysql performance myisam

这是一个两部分问题。当我在表上执行SELECT时,我是否在SELECT运行时将该表锁定在任何用法中?

如果是这样,在执行SELECT语句时没有锁定表的方法是什么?我正在使用MySQL 4.1.20 MyISAM。

更新这里有一个类似的问题Any way to select without causing locking in MySQL?,但答案不适用于MyISAM

3 个答案:

答案 0 :(得分:2)

是的,使用MyISAM表,select会锁定表以进行插入/更新。但是,有几个选择可以同时运行(即它应用读锁定)。如果表格中间没有可用空间,则插入会将数据添加到(内部)存储的末尾,但这些插入仍然可以与选择同时运行。

更多信息here。请注意,MyISAM和InnoDB在这方面的工作方式非常不同。

答案 1 :(得分:0)

有表锁定和行锁定。我建议您阅读数据库引擎MyISAM with Table LockingInnoDB Row Locking

答案 2 :(得分:-1)

考虑一下:当你选择SELECT时,你是否正在更改任何表格单元格?如果没有,则无需锁定表,而MySQL则不需要。表锁定必须在UPDATE时发生,而不是在SELECT时发生。