这是一个两部分问题。当我在表上执行SELECT时,我是否在SELECT运行时将该表锁定在任何用法中?
如果是这样,在执行SELECT语句时没有锁定表的方法是什么?我正在使用MySQL 4.1.20 MyISAM。
更新这里有一个类似的问题Any way to select without causing locking in MySQL?,但答案不适用于MyISAM
答案 0 :(得分:2)
是的,使用MyISAM表,select会锁定表以进行插入/更新。但是,有几个选择可以同时运行(即它应用读锁定)。如果表格中间没有可用空间,则插入会将数据添加到(内部)存储的末尾,但这些插入仍然可以与选择同时运行。
更多信息here。请注意,MyISAM和InnoDB在这方面的工作方式非常不同。
答案 1 :(得分:0)
有表锁定和行锁定。我建议您阅读数据库引擎MyISAM with Table Locking和InnoDB Row Locking
答案 2 :(得分:-1)
考虑一下:当你选择SELECT时,你是否正在更改任何表格单元格?如果没有,则无需锁定表,而MySQL则不需要。表锁定必须在UPDATE时发生,而不是在SELECT时发生。