首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用触发器(MySQL)以编程方式更新代码(Java)或数据库中的数据?

使用触发器(MySQL)以编程方式更新代码(Java)或数据库中的数据?
EN

Stack Overflow用户
提问于 2014-02-28 13:08:32
回答 4查看 1.6K关注 0票数 2

编辑:我需要程序做更快的计算,更新过程需要是实时的(计算100.000到200.000条记录的时间约为0-5秒),这个过程将在多线程(大约2-8线程)中进行。

我将创建程序来更新数据库中的数据。如果我确实在表中插入数据,则将触发更新过程。更新过程的计算成本很高。这就是我的更新过程的想法:

  1. 我将有三个表(A,B,C),每个表都有100.000-200.000个记录。
  2. 我将有表D保存表A,B,C记录计数
  3. 我将有表E保存表A、B、C、D的计算,计算包括乘法、除法和对数基数2。
  4. 我将在表A、B、C中插入数据,在表D和表E中的数据之后必须更新
  5. 此过程可在每次更新中重复3-5次。

哪一个计算速度更快,是以编程方式进行更新,还是使用触发器?

EN

回答 4

Stack Overflow用户

发布于 2014-02-28 13:13:45

最好使用TRIGGERS,并在DB端保持这种复杂性。这将帮助您保持代码的整洁。如果要从不同的文件执行INSERT,那么可能需要在所有这些文件中重写UPDATE逻辑。

如果将来需要更改“后插入”逻辑,则只需更新触发器,而不是更新代码。

票数 3
EN

Stack Overflow用户

发布于 2014-02-28 13:18:27

数据库服务器中的计算周期是一种稀缺资源。您可以拥有尽可能多的运行Java程序的服务器实例,并且随着应用程序的扩展(例如,添加用户),您可以将计算密集型操作分发给多个服务器。

如果在MySQL服务器上执行计算成本高昂的操作,则决定在中央计算机上执行所有这些操作。

此外,在我的经验中,单元测试和维护Java代码比对触发器/存储过程代码更容易。

话虽如此,MySQL的浮点数学操作(日志、乘法)利用服务器的数学指令集并具有合理的效率。

票数 1
EN

Stack Overflow用户

发布于 2014-02-28 13:15:16

触发器将更快,因为它将最接近数据工作,您将不必在数据库和程序层之间传输数据。触发器的问题是,每次插入都会触发触发器。您希望或希望只在插入了大量数据(即多个插入)后才进行计算。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22096093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档