gpt4 book ai didi

mysql - 无法检查 MySQL 中的行状态(锁定或未锁定)

转载 作者:行者123 更新时间:2023-11-29 09:13:38 25 4
gpt4 key购买 nike

在我的应用程序中,我需要在编辑某些行时锁定这些行。如果另一个用户将对该行进行选择,则他的查询将需要等待,直到第一个用户释放锁。我的问题是我需要查看查询是否正在等待,因此在这种情况下能够为进行查询的用户预约。您对这种情况有什么建议吗?提前致谢。

最佳答案

如果您在 MySQL 中使用事务,并且使用最新版本的 MySQL (>5.1),则只需在事务的目标行中进行选择查询即可设置行锁定(并且之前没有)。

并行运行的查询将自动等待,直到第一个事务结束。除非您进行很长的交易,否则等待时间不会很长,并且该过程将在第一个交易结束后继续。除非您的处理时间超过 15 秒,否则通过在锁定时中止事务、向最终用户发送响应并稍后重做事务,您将损失更多时间。

MySQL 有一个锁的超时设置(锁等待超时),你可以将此超时调整为一个相当低的值(假设为 3 秒),如果你的锁,你会得到一个异常wait 太长,那么你将不得不中止事务,但默认情况下让 MySQL 进行锁定和等待管理,而不会在锁定的情况下提前中断事务。

无论如何,您的应用程序代码都应该有异常捕获循环,以捕获这些超时和死锁检测异常。应该做的经典事情是,这种情况是重新启动整个事务,直到它起作用,但如果您愿意,您也可以中止整个事务并告诉您用户他应该等待(但在 90% 的情况下,这比重做交易而不考虑用户交互)。

关于mysql - 无法检查 MySQL 中的行状态(锁定或未锁定),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4804372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com