登录
首页 >  数据库 >  MySQL

mysql 计数器表

来源:SegmentFault

时间:2023-01-20 17:54:56 183浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《mysql 计数器表》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下MySQL,希望所有认真读完的童鞋们,都有实质性的提高。

计数器表,用于保存用户的点击量等,通常使用一张独立的小表来存放,里面放一个int值,在每次点击后增加该值。

create table pv(
    count int unsigned not null
) engine=InnoDB;

update pv set count = count + 1;

对于InnoDB,对该行的修改会造成该行的锁定,使得点击后产生的事务只能串行执行。

多行

可以预先定义多行来保存点击量,然后每次更新时使用rand随机选取一行的主键id,更新该行,这样可以提升一些性能。

返回总量时使用sum把表内数据累加即可。

create table pv(
    id tinyint unsigned not null primary key,
    count int unsigned not null
) engine=InnoDB;

update pv set count = count + 1 where id = rand() * 100;

随机行

直接使用插入,使用大范围的随机数或者使用uuid等不会重复的作为id,另加上on duplicate key update处理碰撞问题。

create table pv(
    id char(32) not null primary key,
    count int unsigned not null
) engine=InnoDB;

insert into pv values(rand() * 10000, 1) on duplicate key update count = count + 1;

最后再运行一个定时任务定期把这些行收敛到一行即可,返回总量时仍可使用sum。

本篇关于《mysql 计数器表》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>