gpt4 book ai didi

php - 使用条件更新查询管理并发

转载 作者:行者123 更新时间:2023-11-29 00:29:26 26 4
gpt4 key购买 nike

我正在使用mysql、php。 table 用户聚会id, user_id, meetup_id 和 unique on (user_id, meetup_id)如果我的聚会受地点限制(10 个地方)9 个用户已经标记为 rsvp 并且如果 2 个用户同时进行 RSVP(我只是考虑并发的情况)

A -> select count(id) from user_meetup -> result : 9 hence go ahead
B -> select count(id) from user_meetup -> result : 9 hence go ahead
A -> insert ......
B -> insert ......

现在他们两个都到位了,我数到 11,我的解决方案是再添加一张表user_meetup_countid, meetup_id, user_count(计数设置为 0 作为默认值,并在创建聚会后立即创建记录)现在如果使用像这样的更新查询 更新 user_meetup_count 设置 user_count = user_count + 1 其中 user_count < 10如果我根据上述查询更新的行数写入 user_meetup 表如果它返回 0 表示它已满,如果它返回 1 我得到了位置

如果 2 个用户同时尝试,这会起作用吗?我解决并发问题的方法对吗?有没有更好的办法 ?测试此类情况的工具是什么?

最佳答案

使用lock tables在计算之前。插入后解锁。

或者您可以使用 GET_LOCK然后 RELEASE_LOCK . 有了这个,您不需要锁定所有条目表。

或探索关于 gap locking 的主题对于 innodb 表。 有了这个,您需要使用事务。

你可以使用 jMeter用于测试您的查询。

关于php - 使用条件更新查询管理并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17319564/

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