哪种数据库类型用于日志分析?

时间:2017-02-14 13:34:22

标签: mysql performance graph-databases logfile nosql

我正在运行数据库进行日志分析。目前我使用MySQL数据库,我的分析表如下所示:

  • UUID
  • REQUEST_ID
  • REQUEST_TIMESTAMP
  • RESPONSE_TIMESTAMP
  • RUNTIME
  • SERVER_NAME

我使用此表为每个条目创建视图,进行5分钟聚合和每日聚合。我每天要插入大约400,000个条目。目前这张表中有大约7千万行。

我的实际问题是,我的查询变慢,我的插入/更新查询以及我的聚合查询。

所以我为我的每日聚合创建了第二个表。每天工作一次,进行最后一天的聚合。第二个作业将删除原始表格中超过30天的所有条目。

我的问题: 这是正确的方法还是更好的表结构甚至是另一个数据库(例如NoSQL,Graph-database等)?

1 个答案:

答案 0 :(得分:1)

除非必须,否则不要索引UUID。它非常随机,导致大量I / O.请参阅here

正如您所讨论的那样构建Summary表;它们是使Data Warehousing表现良好的主要方式。但是,让我们看看你有什么 - SHOW CREATE TABLESELECTs,加上表格大小。

你是如何进行摄取的? Here是关于扩展的一些提示。表中400K /天和70M对MySQL来说没问题。

server_name(以及其他列)的规范化 - 请参阅提取链接。

为什么会有更新?日志往往不需要更新。汇总表可能使用批量IODKU,这是一种更新;你用的是什么?

至于删除旧数据,PARTITION BY RANGE(TO_DAYS(...))有32个分区,每晚使用DROP PARTITION。这比<{1}} Partition tips

多少内存?使用InnoDB? 70M行占用大约7GB? DELETE的价值是什么?

您在什么条件下触摸的数据超过一天?如果“永远不会”,则缓存应该不是问题。如果经常&#39;,让我们研究这些案例。