在MySQL中存储日志记录时的性能问题

时间:2014-08-07 15:50:56

标签: php mysql

我已经设置了15分钟的cron作业来监控10个以上的网站'性能(全部托管在不同的服务器上)。每隔15分钟,我将检查服务器是否上/下,响应时间以毫秒为单位等。

我想将这些信息保存到MySQL而不是log.txt文件中,以便可以轻松检索,查询和分析。 (即x天或x月的服务器性能或x和y天之间的服务器性能)

这是我的表格看起来像:


id website_ip recorded_timestamp response_time_in_ms website_status


如果我为每个网站插入一个新条目,每天我会为每个网站(15 x 4 x 24)创建1440条记录,然后对于10个网站,每天会有14400条记录!!

所以,我想每小时/网站只创建一个条目。这样,我不是每天创建14400条记录,而是每天只有24 x 10 = 240条记录,用于10个网站。

但是,它还不完美,如果我想知道保留全年的记录怎么办?然后,我将为10个网站提供87600条记录,共365年。

是87600条记录吗?我最关心的是服务器本地时间和客户端本地时间之间的差异。如何在不搞砸准确性和时区的情况下改进设计?

1 个答案:

答案 0 :(得分:1)

评论有点长或太短。你的问题的简单答案是“不”。

不,87,600条记录很多记录。实际上,每年有5,256,000条记录的完整数据并不多。如果你有非常宽的记录,它可能是很多数据,但你的记录最多只有几十个字节。结果表每年仍然不到一千兆字节。真的不是很多。

数据库旨在拥有大表。您有机会加快对日志文件的查询。最明显的是在列上创建通常用于选择目的的索引。另一个机会是使用分区将表的存储分解为单独的“文件”(技术上是表空间),因此查询需要的I / O更少。

您可能希望定期汇总更新的记录,并将结果存储在最常见查询的汇总表中。但是,这种详细程度超出了这个答案的范围。