gpt4 book ai didi

mysql - 使用 NoSQL 添加使用统计信息的有效方法

转载 作者:行者123 更新时间:2023-11-29 12:08:11 24 4
gpt4 key购买 nike

我正在开发一个系统,该系统以各种事物的启动和停止事件的形式跟踪使用情况。在我当前的实现中,我有 MySQL,表的每一行都包含开始和停止时间戳,以及有关事件信息的唯一 ID。

在 MySQL 中运行聚合查询来计算停止时间和启动时间的总和非常简单且相对较快,这会返回总使用分钟数。

我正在尝试了解如何将其转化为 NoSQL,并希望获得一些关于以高性能方式实现此功能的最佳方法的建议。

由于 NoSQL 似乎并不真正支持这种开箱即用的计算,因此我必须将一大堆数据发送给我的客户端并进行计算,这将非常慢。一种想法是在插入时预先计算差异(基本上是非规范化),这会创建冗余数据,但会使减法更快。

下一个问题是添加,对于简单的聚合情况,这可以通过维护总和的计数器来完成(实际上在这种情况下,我什至可能不需要预先计算的差异)。然而,问题是,实际上我需要在不同的数据切片上生成这种用法,因此预计算很难做到。我想可以预先计算一堆常见的总和,比如十个左右,但是插入时间似乎会显着减慢,因为必须为每个插入完成此逻辑。对我来说,NoSQL 的最大优势之一是即使对于大型数据集,插入时间也非常短。

如果有人有任何建议,请告诉我。

最佳答案

让我们修复 MySQL 插入时间。

  • 批量插入 - 100 行 INSERT 的运行速度是 100 个 1 行 INSERT 的运行速度的 10 倍。或者使用加载数据
  • (假设 InnoDB)--innodb_flush_log_at_trx_commit = 2-- 可能会显着提高速度。
  • 尽量减少索引数量。

关于mysql - 使用 NoSQL 添加使用统计信息的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31116158/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com