mysql 写计数器需要注意的问题
阅读原文时间:2023年07月11日阅读:1

MySql计数器,如网站点击数,如何实现高性能高并发的计数器功能 由于并发的时候 不能同时写入一行数据 所以要分开写

  
先创建表  
CREATE TABLE \`article\_view\`(  
\`article\_id\` int(11) NOT NULL,  
\`pond\` tinyint(4) NOT NULL COMMENT '池子,就是用来随机用的',  
\`view\` int(11) NOT NULL,  
PRIMARY KEY (\`article\_id\`, \`pond\`)  
)ENGINE=InnoDB;  

小访问量的随机池子100个肯定多了,三五个足矣。每次访问的时候,随机一个数字(1-100)作为pond,如何该pond存在则更新view+1,否则插入,view=1。借助DUPLICATE KE

  
INSERT INTO \`article\_view\` (\`article\_id\`, \`pond\`, \`view\`) VALUES (123, RAND()\*100, 1) ON DUPLICATE KEY UPDATE \`view\`=\`view\`+1  


统计的时候

  
SELECT SUM(\`view\`) FROM \`article\_view\` WHERE \`article\_id\`='123'  

2 还有就是用消息队列的 一般用消息队列比较靠谱(特别有百万数据的时候)