我有一个mysql表:
CREATE TABLE `coupons` (
`id` INT NOT NULL AUTO_INCREMENT,
`code` VARCHAR(255),
`user_id` INT,
UNIQUE KEY `code_idx` (`code`)
) ENGINE=InnoDB;
该表由数千/数百万个代码组成,最初每个人的user_id
都为NULL。现在我有了一个web应用程序,它为同时访问该应用程序的数千名用户分配了一个唯一的代码。考虑到非常高的流量,我不确定处理这个问题的正确方法是什么。我写的查询是:
UPDATE coupons SET user_id = <some_id> where user_id is NULL limit 1;
并且该应用程序以例如1000请求/秒的并发性来运行该查询。
我观察到的是,整个表都被锁定了,这不能很好地扩展。我该怎么办?谢谢。
https://stackoverflow.com/questions/55109670
复制相似问题