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

Php 处理不断更新的mysql表的最佳方法,php,mysql,sql,Php,Mysql,Sql,我有一种情况,我想不出最好的办法来妥善处理。我有一个mysql数据库,其中有许多表,用于存储世界各地许多设备的配置信息。有一个脚本可以频繁运行,以查找更改、跟踪状态以及与这些设备相关的各种其他内容 数据驱动用于管理所述设备的前端应用程序。我的问题是,我如何正确地处理不断更新数据库的问题。因此,目前我将所有数据写入临时表,然后截断/选择*到活动表中 我知道这是绝对可怕的,它导致了许多不同的问题,这是一个真正的痛苦。我肯定有更好的办法,但我找不到。有谁能提出更有效的建议吗。这些表相对较小,所以我可以

我有一种情况,我想不出最好的办法来妥善处理。我有一个mysql数据库,其中有许多表,用于存储世界各地许多设备的配置信息。有一个脚本可以频繁运行,以查找更改、跟踪状态以及与这些设备相关的各种其他内容

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

我知道这是绝对可怕的,它导致了许多不同的问题,这是一个真正的痛苦。我肯定有更好的办法,但我找不到。有谁能提出更有效的建议吗。这些表相对较小,所以我可以使用上述方法。每个表的行数少于2k

如果我能弄清楚如何只更新已经改变的东西和任何新的东西,那就太好了。我就是想不出怎么挥动那把。如有任何建议,将不胜感激

mysql版本: mysql版本14.14发行版5.1.67 MyISAM可能也不应该使用这个

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

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

我有一个存储字段的简单表,如:这里大大简化了

主机名、ip、状态、策略、位置


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

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


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

这里的信息太少,不清楚你在问什么。请分享您的数据的一些代码、模式和示例。我正在寻找如何在数据可能没有更改但同时插入新数据时处理更新表的建议。所以,我不想找任何人给我代码示例,我只是一个想法。。。。为了简单起见,让我试着用这个例子。我有一个存储状态、ip、主机名和策略字段的表。字段策略或状态可以随时更改,并且需要在更改时处理。这似乎根本不是SQL/mySQL问题,实际上也不是PHP特有的问题。问题似乎在于前端应用程序知道要应用哪些更改。如果它知道这一点,就可以在主表上执行适当的INSERT和UPDATE语句。在更新的情况下,只更新所有非PK列是可以的。应用程序可能或应该如何跟踪这些列取决于很多事情,重要的是包括应用程序风格的本地程序与web应用程序以及使用模型,尤其是它是否必须容纳多个同时访问同一数据库的用户。由于数据集太小,我想知道使用时间戳并允许重复行是否更有意义。然后我可以随时查找最新的数据,并在某个时候删除旧的条目。啊,太好了,谢谢!因此,我已经准备进行一项更改,即不带截断的更新/插入。然而,仍然有一些东西丢失了一个消息缓冲区,看起来它可以做到这一点。谢谢