MySQL锁定问题

时间:2010-05-22 22:07:00

标签: php mysql locking

我有一组简单的编写器和一组使用MySQL ISAM表的读者。编写器只插入行,而读者只检查新行。

好的,所以我知道在这种情况下我不需要锁,因为我没有修改现有的行。但是我的作家正在访问另一个 需要锁的表。除了MySQL文档中规定的以下限制外,我的信息似乎无关紧要:

  

需要锁定的会话必须   获得它需要的所有锁   单个LOCK TABLES语句。而   由此获得的锁被保持着   session只能访问锁定的   表。例如,在下面   陈述序列,错误   尝试访问t2时发生   因为它没有锁定在LOCK中   TABLES声明:

所以要访问我要插入行的表,我需要锁定它,这导致我的性能问题。有关如何解决此问题的任何建议?

1 个答案:

答案 0 :(得分:0)

通常,您可以在需要锁定的查询周围立即锁定和解锁。文档只是声明,对于锁定时运行的任何查询集,必须锁定所有涉及的表。您可以在完成后立即解锁并触摸任何其他表格。

还要考虑InnoDB支持行级锁定,这通常比表锁定性能更好,因为在你写的时候,其他行上的其他查询也不会被锁定以供读取。

相关问题