Mysql 在Innodb中解析并发更新

Mysql 在Innodb中解析并发更新,mysql,queue,scalability,Mysql,Queue,Scalability,问题: 我试图通过一个表格来跟踪我网站中的图片点击 `click_counts(image_id int(10) NOT NULL, image_clicks int(10) NOT NULL DEFAULT 0, PRIMARY KEY (image_id))Engine=InnoDB; 此表是使用查询更新的 INSERT INTO click_counts (image_id, image_clicks) VALUES ( ? , 1) ON DUPLICATE KEY UPD

问题: 我试图通过一个表格来跟踪我网站中的图片点击

`click_counts(image_id int(10) NOT NULL, 
 image_clicks int(10) NOT NULL DEFAULT 0, 
 PRIMARY KEY (image_id))Engine=InnoDB;
此表是使用查询更新的

INSERT INTO click_counts (image_id, image_clicks) 
VALUES ( ? , 1) 
ON DUPLICATE KEY UPDATE image_clicks = image_clicks + 1; 
当并发访问时,此实现会导致争用-mysql慢速查询日志会显示同一映像_id的多个insert语句,这意味着由于行级锁定,insert语句(更新同一行)会相互阻塞。对于这个问题,什么是可扩展的非阻塞解决方案?我想这将是一个常见的用例,我是新手


感谢您的建议。

。我相信这是一个可扩展的解决方案。你有什么问题吗?是的,我想我们需要更好地解释这个问题。同时,切换到UNSIGNED int,注意“+1”代码不是空安全的。