我如何锁定MySQL或phpmyadmin中的表?

时间:2010-01-03 20:40:19

标签: mysql locking phpmyadmin

我需要使用表格来排队系统。该表将不断更新。

例如,我网站上的多个用户会添加他们的文件进行处理,我听说当多个用户同时进行更新时,表格会变得没有响应或类似的情况。

在这种情况下我需要锁定表吗?我如何将锁应用于mysql表?

3 个答案:

答案 0 :(得分:2)

通过不断更新是否意味着每秒会附加10,000次?即使对于中端服务器,每秒仍有10,000个机会可供其他用户共享。

当需要作为一个单元进行多个相关操作时,才需要锁定表。在大多数情况下,将一系列操作包含在数据库事务中就足够了。如果“常量更新”仅仅是insert sometable values ( ...),那么很容易保证事务的一致性。

答案 1 :(得分:1)

  

在这种情况下我需要锁定表吗?

所有表都可以锁定,没有特殊类型的表。也就是说,当遇到死锁时处理问题。 Isolation levels也是一个密切相关的话题。

  

如何将锁应用于mysql表?

LOCK TABLES syntax - this article涵盖&为什么你想要锁定表。

答案 2 :(得分:0)

当您一次执行多个更新时,您可能会遇到死锁情况。像InnoDB这样的引擎会检测到这一点并使您的某个事务失败(您可以重试,但只能进行整个事务)。

您可以通过表锁定来避免这种情况,但它会降低并发性。

MyISAM(不支持MVCC或事务)等引擎无论如何都会隐式使用表锁定。此类表锁仅在查询期间存在;在不再需要桌子后(不一定尽快,但很快),它们会很快自动发布。

我建议你不要使用LOCK TABLE,除非你觉得你真的需要;如果遇到死锁,请重试该事务。