最大 JDBC 批大小是多少?

我有一个列表,这个列表不断增加。我正在根据列表大小添加批处理。我忘了在指定大小下限制执行Batch。

程序正在运行数小时。我现在不想停止,修复并重新开始。

我的问题是,什么决定了添加批的大小?一次要执行的批处理的最大容量是多少?我可以使用多少时间而不做?executeBatch()addBatchexecuteBatch()


答案 1

PgJDBC 在批处理方面有一些限制:

批处理的好处是减少了网络往返。因此,如果您的数据库是应用服务器的本地数据库,那么意义就小得多。随着批大小的增加,回报会逐渐减少,因为在网络等待中花费的总时间会迅速下降,因此尝试使批尽可能大通常不是工作。

如果要批量加载数据,请认真考虑改用 API,通过 PgJDBC 通过接口获取。它允许您将类似CSV的数据流式传输到服务器,以便快速批量加载,只需很少的客户端/服务器往返。不幸的是,它的记录非常不足 - 它根本没有出现在主要的PgJDBC文档中,只出现在API文档中COPYCopyManagerPgConnection


答案 2

AFAIK除了内存问题之外没有限制。关于您的问题:语句仅在执行批处理时发送到数据库,因此直到您执行批处理之前,内存将继续增长,直到您将获得JavaHeapSpace或批处理将被发送到数据库。


推荐