[英]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.