2010-05-22 70 views
-1

我有一套编写器和一套使用MySQL ISAM表的读取器的简单设置。编写者只插入行,而读者只检查新行。MySQL锁定问题

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

需要锁必须 获得所有它在 一个LOCK TABLES语句需要的锁的会话。当 这样获得的锁被保持时, 会话只能访问被锁定的 表。

所以访问我要插入行的表:例如,在下面的语句 序列,错误 对试图访问T2 因为它没有处于LOCK TABLES语句锁定发生进入,我需要锁定它,这是我的性能问题。有关如何解决这个问题的任何建议?

+0

你应该给我们更多关于相关表的信息,以及为什么你需要锁定它。这会给我们一个更好的想法,可以向您提供哪些替代方案。 – webbiedave 2010-05-22 22:21:54

回答

0

通常,您需要锁定的查询周围立即锁定和解锁。该文档只是简单地说明,对于任何一组查询在锁定时运行,所涉及的所有表都必须锁定。只要你完成,你可以解锁,并触摸任何其他表。

同时认为,InnoDB支持行级锁,这往往是最好的表锁的性能,因为其他查询其他行也不会被锁定为读而你也写。