gpt4 book ai didi

Java jdbc Sql Server 并行写入

转载 作者:行者123 更新时间:2023-11-30 01:55:06 25 4
gpt4 key购买 nike

我有一个包含以下步骤的场景:

  1. 使用mssql jdbc driver我需要连接到 Sql Server数据库表A并获得数百万行。

  2. 我需要对表数据进行一些处理和解析 以及来自其他来源(例如网络服务)的数据。

  3. 我必须将处理后的数据写入目标表B、C、D、E、F、 G 位于不同的 Sql Server 数据库上。写入可以(应该?) 并行完成。

我想请教一些关于如何正确处理第3点的建议。我认为向不同线程提供相同的连接以并行写入目标表是一个坏主意。我的总体想法是为每个目标表(在本例中为 6 个)生成一个新线程,并为每个表创建不同的 jdbc 连接,因此理论上每个写入都可以并行且彼此独立地完成。

这行得通吗?有其他/更好的方法的建议吗?

最佳答案

My general idea is to spawn a new thread for each target table (6 in this case) and create a different jdbc connection for each table, thus in theory each write can be done in parallel and independent from each other.

对我来说,这当然是一个不错的计划。我会使用连接池,例如 HikariCPDBCP维护与数据库服务器的多个连接。然后您可以添加多个线程,每个线程都可以请求一个连接,然后将其返回到池中以供稍后使用。

Will this work? Suggestions for other/better ways?

它会起作用的。需要考虑的一件事是 6 可能不是正确的数字。您的服务器可能没有足够的带宽来一次处理那么多数据,因此您可能需要考虑减少池中的线程数量,直到找到可为您提供最大带宽的最佳数量。也就是说,如果有 6 个表,那么 6 可能确实是正确的数字,具体取决于数据在服务器上的分区方式。

根据您对线程的了解程度,您应该查看 docs on thread pooling .

关于Java jdbc Sql Server 并行写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54803988/

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