gpt4 book ai didi

php - 处理不断更新的mysql表的最佳方法

转载 作者:行者123 更新时间:2023-11-29 23:20:59 26 4
gpt4 key购买 nike

我有一个场景,我无法找出正确处理的最佳方法。我有一个 mysql 数据库,其中有许多表,用于存储世界各地许多设备的配置信息。有一个脚本会定期运行,以查找更改、跟踪状态以及与这些设备相关的各种其他内容。

数据驱动用于管理所述设备的前端应用程序。我的问题是如何正确处理一直更新数据库的问题。因此,目前我将所有数据写入临时表,然后截断/选择 * 到事件表中。

我知道这绝对是可怕的,它会导致许多不同的问题,这些问题真的很痛苦。我确信一定有更好的方法,但我找不到。任何人都可以建议一些更有效的方法。这些表相对较小,因此我可以使用上述方法。 (每个表少于 2k 行)

如果我能弄清楚如何只更新已更改的内容和新的内容,那就太好了。我只是不知道如何摆动那个。任何建议将不胜感激。

mysql版本:mysql 版本 14.14 分发 5.1.67MyISAM(可能也不应该使用这个......?)

有什么方法可以尝试使用时间戳或类似的东西......

更新:我在这里没有提供足够的数据,所以我的错。让我尝试提供一些更好的细节。

我有一个简单的表,用于存储以下字段:(此处大大简化)

主机名、IP、状态、策略、位置。

我有一个脚本,大约每 10 分钟运行一次,以捕获所有这些以及更多内容,并将其转储到 mysql 中。问题是,当我截断时,有时用户可能会尝试使用前端应用程序,但表尚未填充。我正在尝试想出更好的方法来处理这个问题。

最佳答案

有两件事:MyISAM 可能不是您的表的最佳选择。写入 MyIASM 会锁定整个表。像 InnoDB 这样的引擎将允许行级锁定,因此只有受影响的行才会在更新和插入期间被锁定。当然,切换到这个可能并不简单。 MyIASM 有其用途。它速度快、开销低,通常非常适合数据仓库。

接下来研究使用消息总线,即 RabbitMQ 。它们充当大型数据流的缓冲区,您可以将其批量而不是实时导入到数据库中。随着您的应用程序扩展,这些事情将变得越来越必要。

关于php - 处理不断更新的mysql表的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27301291/

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