[英]Update data programmatically in code(Java) or in database using trigger (MySQL)?
编辑:我需要程序更快地执行计算,更新过程需要是实时的(计算100.000至200.000记录大约需要0-5秒),此过程将在多线程(大约2-8个线程)中进行
我将创建程序来更新数据库中的数据。 如果我确实在表中插入数据,将触发更新过程。 更新过程将在计算上花费很大。 这是我的更新过程的想法:
哪个计算速度更快,以编程方式或使用触发器进行更新?
最好与TRIGGERS
一起TRIGGERS
,并将这种复杂性保留在数据库方面。 这将帮助您保持代码干净。 如果要从其他文件执行INSERT
,则可能需要在所有这些文件中重写UPDATE
逻辑。
而且,如果将来您需要更改插入后逻辑,那么您只需要更新触发器,而不是更新代码即可。
数据库服务器中的计算周期是一种稀缺资源。 您可以负担得起运行Java程序的服务器实例的数量,并且随着应用程序的扩展(例如,添加用户),您可以将计算密集型操作分配给多个服务器。
如果您在MySQL服务器上执行计算量大的工作,那么您将决定全部在中央计算机上完成这一切。
另外,以我的经验,与对触发器/存储过程代码执行相同的操作相比,对Java代码进行单元测试和维护更容易。
话虽这么说,MySQL的浮点数学运算(日志,乘法)利用服务器的数学指令集,并且效率相当高。
触发器将更快,因为它将最接近数据,并且您不必在数据库和程序层之间传输数据。 触发器的问题是每次插入都会被触发。 是您想要的还是仅在插入大量数据(即许多插入)后才进行计算的事情。
我将有3个表(A,B,C),每个表都有大约100.000-200.000条记录
这是一个很小的数据库。
I will have table D to save table A, B, C record count
您是否在特定日期时间保存每个记录的历史记录? 那是这样做的唯一原因。
I will have table E to save table A, B, C, D calculation, the calculation including multiplication, division and log base 2
简单的东西。
I will insert data to table A, B, C and after that data in table D and E must be updated
使所有这些成为单个工作单元是很重要的。 希望您能使他们成为交易。
在每次更新中,此过程都可以重复3-5次。使用编程方式或使用触发器进行更新,哪个更快?
我认为数据库-存储过程并首先触发。 特别是如果有很多更新。
数据A,B和C的三个来源是否独立? 如果我插入A,是否执行D和E的计算? 同样对于B和C? 如果三个人都在短时间内插入了记录,您是否可能会有大量流量?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.