我有网站,在那里用户可以张贴他们的文章,我想给每个文章的访问和参考其作者的完整统计数据。在这里,实现似乎非常简单,只需为每次访问存储一个数据库记录,然后使用聚合函数来绘制图形等等。
问题是,文章在24小时内获得了大约30万的浏览量,而在短短一个月内,统计表将获得大约900万条记录,这是一个非常大的数字,因为我的服务器并不是很强大。
对于这类任务有解决方案吗?是否有算法或缓存机制可以在不损失准确性的情况下存储长期统计数据?
附注:这是我的原始统计表:
visitid INT
articleid INT
ip INT
datetime DATETIME
table:
name date object
james 25/04/2017 bycicle
insert into statisticstable
select * from table;
我想写一个函数,只有当名称和日期还没有在统计表中时,才更新表统计数据。如果统计表中有名称和日期,则不更新表统计,否则,如果统计表中没有名称和日期,则更新表统计。
如下所示:
CREATE FUNCTION update_table()
DECLARE
name = &name
date = &date
if &name and &date are
我有一个带有字段id(int)和timestamp(timestamp)的统计表。
SELECT id FROM stats GROUP BY id ORDER BY count(id) DESC LIMIT 10;
给了我前十个身份。
我想把这些id放到另一个‘流行’表中。
Popular有id(int)、position(int)和timestamp(timestamp)字段。
总而言之,我想创建一个查询,它将使用在统计表中找到的“前10个”id更新受欢迎的表。