1

我必须实现一个由 MySQL 数据库备份的跟踪系统。系统将跟踪许多应用程序,每个应用程序至少跟踪 5 个事件(例如,有多少用户点击了链接 x,有多少用户访问了页面 y)。一些应用程序将拥有数百万用户,因此每秒几千次更新并不是一个牵强的假设。系统的另一个组件必须计算一些应该每分钟更新的统计信息。系统还应记录这些统计值的过去值。

我的一个朋友建议的方法是将每个事件记录在日志表中,并有一个每分钟运行的 cron 作业,计算所需的信息并更新统计表。

这对我来说听起来很合理。有更好的选择吗?

谢谢。

4

3 回答 3

1

我已经登录到一个 mysql 日志表,其中有一个可以处理它的 cron。

我通常innodb在我的应用程序中使用表,但对于日志表,我将其作为myisam并使用insert DELAYED . . .查询。

Myisam 没有提供 innodb 的所有优点,但我相信它会稍微快一些(出于这个原因)。

您担心的主要事情是当您的 cron 运行时数据库锁定,但是使用“插入延迟”在大多数情况下可以解决这个问题。

于 2010-01-07T08:38:52.407 回答
1

如果您的命中率太高,甚至无法将延迟插入 myisam 表来处理,您可能希望将最近的命中保留在内存中(memcache 可以派上用场,或者您可以编写自定义守护程序)并定期将内存中的命中处理到数据库统计表(聚合)。

于 2010-01-07T08:42:06.753 回答
0

我真的建议您使用现有的日志分析器来分析来自您的 Web 服务器的现有日志。一个例子是webalizer。我认为更好的是外部系统,例如谷歌分析。这工作得更好,因为它将继续与负载平衡器和缓存等中间系统一起工作。

于 2010-01-07T08:41:56.017 回答