在MySQL中使用大型数据集

时间:2016-10-15 21:20:25

标签: mysql sql database database-design

我正在寻找一些建议,我们正在创建一个网站跟踪平台(如谷歌分析),并将使用1,000,000的数据行。在MySQL中使用它的最佳方法是什么?

我将跟踪网站访问者,因此一个网站每天可以访问20 / 30k,这些都将保存在数据库中。一旦我们达到1年,我们可以看到超过1100万行,而这只是一个帐户。是否最好为每个网站创建一个数据库表?并在1年后将数据移动到该网站的辅助表格?或者有更好的方法吗?

向此添加一些其他背景

当用户访问网站时,跟踪软件将获取用户信息和访问过的页面并将其保存到数据库中。

此用户信息将根据网站ID保存,并包含5-6个不同的项目,如浏览器,IP地址,网站停留时间等...

我可以通过两种方式来做到这一点;

  1. 将数据保存到每个网站的访问表中,以便在添加新网站时将其称为WEBSITEID_visits等...

  2. 将数据保存到每个月的访问表中,使用网站ID可以引用与之相关的网站。

  3. 有没有更好的方法来做到这一点,我也应该使用与MySQL不同的东西吗?

    很抱歉,如果这不是发布此内容的正确位置。

1 个答案:

答案 0 :(得分:0)

对于数据仓库来说,一行几秒钟的速度相当低。以下是一些提示。

  • 规范化!查看列,确定哪些列有很多重复(浏览器,用户等)。为它们构建规范化表,并将它们的ID存储到“事实”表中。不要规范化任何“连续”值,例如datetime。

  • 不要根据时间使用多个表。它会使您的代码复杂化而不会带来任何好处。

  • 除非您的用例与上述四个here中的一个匹配,否则不要PARTITION事实表。

  • Summarize数据。运行COUNT(*)SUM(...)超过一个月的数据将会非常缓慢。