繁体   English   中英

如何锁定MySQL或phpmyadmin中的表?

[英]how can i lock tables in MySQL or phpmyadmin?

我需要为排队系统使用一张桌子。 该表将不断更新。

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

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

通过不断更新 ,您是说将其每秒追加10,000次吗? 即使对于中端服务器,每秒仍然有10,000个机会可供其他用户共享该表。

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

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

所有表都可以被锁定,没有特殊类型的表。 就是说,当您陷入僵局时,请处理该问题。 隔离级别也是一个密切相关的主题。

我如何将锁应用于mysql表?

LOCK TABLES语法 - 本文介绍了如何以及为什么要锁定表。

一次执行多个更新时,您将陷入僵局。 诸如InnoDB之类的引擎将检测到此情况,并使您的事务之一失败(您可以重试,但只能重试整个事务)。

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

诸如MyISAM之类的引擎(无论如何都不支持MVCC或事务)无论如何都隐式使用表锁定。 这种表锁仅在查询期间存在。 在不再需要该表之后,它们会很快自动释放(不一定要尽快,但很快)

我建议您不要使用LOCK TABLE,除非您确实需要这样做。 如果遇到死锁,请重试该事务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM