gpt4 book ai didi

mysql - 在大量插入表中处理大型数据集的策略

转载 作者:搜寻专家 更新时间:2023-10-30 20:45:39 25 4
gpt4 key购买 nike

我有一个 Web 应用程序,它有一个 MySql 数据库和一个 device_status 表,看起来像这样......

deviceid | ... various status cols ... | created 

这张表每天插入多次(每台设备每天2000+(预计年底有100+台设备))

基本上,当设备上发生任何事情时,这个表都会记录下来。

我的问题是我应该如何处理一个将很快变得非常大的表?

  1. 当这个表超过 1000 万行时,我是否应该放松并希望数据库在几个月后会好起来?然后在它有 1 亿行的一年内?这是最简单的,但看起来这么大的表性能会很糟糕。

  2. 我是否应该在一段时间后(一个月、一周)归档旧数据,然后让网络应用查询实时表以获取最近的报告,并同时查询实时表和存档表以获取涵盖更长时间的报告跨度。

  3. 我是否应该有一个每小时和/或每天的汇总表来汇总设备的各种状态?如果我这样做,触发聚合的最佳方式是什么?克朗?数据库触发器?此外,我可能仍需要存档。

必须有更优雅的解决方案来处理此类数据。

最佳答案

我在跟踪广告商在我的网站上看到的浏览量时遇到了类似的问题。最初我为每个 View 插入一个新行,正如您在这里预测的那样,这很快导致表格变得异常大(以至于它确实导致了性能问题,最终导致我的托管公司关闭该站点几个小时后我才解决了这个问题)。

我采用的解决方案与您的 #3 解决方案类似。我没有在出现新 View 时插入新记录,而是更新了相关时间范围内的现有记录。就我而言,我为每个广告都做了每日记录。为您的应用使用什么时间范围完全取决于您的数据和需求的具体情况。

除非您需要专门跟踪过去一小时内发生的每一次事件,否则您可能会过分地存储它们并在以后汇总。您不必费心使用 cron 作业来执行常规聚合,您可以简单地检查具有匹配规范的条目。如果找到一个,则更新匹配行的计数字段而不是插入新行。

关于mysql - 在大量插入表中处理大型数据集的策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3376696/

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