关闭。这个问题是off-topic .它目前不接受答案。
想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。
8年前关闭。
Improve this question
我们在 MySQL 数据库上运行一个自定义的 OpenX 广告服务器,该数据库获得大约。 100 万次点击/天。我们需要存储所有这些点击信息并根据它显示统计信息。
现在,所有点击信息每 2 天汇总一次,并删除特定点击信息。但是我们希望为我们的附属公司提供一项新功能,允许他们设置动态跟踪 ID (TID),并且基本上基于此跟踪他们的点击和转化。
所以,问题是我们的点击表每天至少会增加 100 万个条目,我们需要能够搜索这个表并显示特定时间段内一个用户的所有点击,按 TID 分组我上面提到过,或者通过TID搜索。
我查看了 MySQL 分区,它似乎是一个不错的解决方案,但是,我不确定它是否仍能在巨大的数据库(可能有数十亿个条目)上正常工作。
您认为解决此问题的正确方法是什么?
编辑:
根据您的回答,我现在正在考虑混合解决方案。
我们已经有一个“LIVE”表,在维护时聚合点击时将从该表中删除条目,它看起来像这样:
表:点击次数
查看者_id | ... |日期时间 |成员(member)_id | ... |时间
(我跳过了此时不重要的列)
在维护时,我可以将所有内容移到另一个看起来几乎相同的月度表中,例如 表:clicks_2012_11 ,其中包含 的索引日期时间 , affiliate_id 和 时间 并由 分区affiliate_id .
所以现在,当一个成员(member)想要查看他过去 2 个月的统计数据时,我知道我必须查看 。表:clicks_2012_10 和 表:clicks_2012_11 (我将时间范围限制为最多 2 个月)。因为我有由 分区的表affiliate_id ,将仅从 2 个表中搜索所需的分区,我现在可以列出过去 2 个月内有任何事件的所有 TID。
您如何看待这种方法?有什么明显的问题吗?我是否在没有充分理由的情况下把事情复杂化了?
最佳答案
大(甚至“巨大”)表中没有任何内在的东西会导致 MySQL 失败。大表主要是以下方面的问题:
您需要解决所有这些问题。
分区主要用于批量数据维护,例如删除整个分区。默认情况下,仅在某些列上对大表进行分区当然不是最佳实践。总是出于特定原因引入分区。
关于每天 100 万次点击的 MySQL 解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13120925/