繁体   English   中英

MySQL中的数据库每日计数器

[英]Database daily counter in MySQL

我想在MySQL数据库中创建一个计数器,该计数器存储特定日期,月份和年份中每种产品的视图数。

问题是我有大约2000种产品。 我考虑过使用以下架构:

 id (BIGINT)
 year (INT[4])
 month (TINYINT)
 day (TINYINT)
 product_id (INT)
 pageviews (BIGINT)

该解决方案的问题在于,在最坏的情况下,如果每天查看每个产品,那么我的数据库中每天将有2000行。 乘以36天,我每月将有72,000。

我想知道是否有更好的方法来实现这一目标。 我认为每日数据将仅作为应用程序变量(在.NET中开发)和ArrayList保留在内存中。 如果我选择了这个方向,那么我的行数/数据将更少,每月有2000行。

我真的很想保留每日的累计浏览量。 顺便说一句,预览仅用于说明目的,我将存储不同的数据,但是该数据将非常频繁地更新。

如果我使用每日专栏,它将几乎每2-5秒更新一次。 我打算通过从Javascript调用ASP.NET Web服务,传递product_id并增加计数器+1来更新MySQL异步。 这是为了防止应用程序等待更新发生。

我也想知道估计表的大小。 如果我做对了:

BIGINT = 8字节

日期时间= 10字节

INT-4个字节

^如果我决定使用datatime列而不是年/月/日

30个字节* 2000 = 60,000字节

60KB(大约)* 30天= 180KB月

180KB月* 12个月= 2160KB /年

我说对了吗?

好的,我在数据库设计上不是很出色,但是我知道很多...您应该问自己,想要将这些2K产品的每日命中保存多长时间?

如果您只想持有一个星期,则可以计算出Size的大小(如果您想要持有一个月)。

如果您想将其保存一个月,那么您总是可以每月创建一个表,并将每日匹配数据保存到该表中并进行汇总,因此每个表中只有2K行

或者,您可以使用一个“仓库”表,该表将保存每个月(例如某月)的所有匹配数据,每个月对每个月进行汇总后,数据将被复制到该仓库表中。

如果您希望无限期保存这些点击,那么就我所知,这就是我的方式(同样不是数据库设计大师)。

同样,如果您要保存命中最多一个月,则应该这样做。

希望我能帮到您,Sagi。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM