簡體   English   中英

什么是最大JDBC批量大小?

[英]What is the max JDBC batch size?

我有一個列表,該列表不斷增加。 我正在做依賴於列表大小的批量添加。 我忘了為指定大小的executeBatch設置限制。

計划工作了幾個小時。 我現在不想停下來,修理並重新開始。

我的問題是,決定添加批次的大小是什么? 批處理一次執行executeBatch()的最大容量是多少? 多少次我可以使用addBatch而不執行executeBatch()

PgJDBC對批次有一些限制:

批量處理的好處是減少了網絡往返次數。 因此,如果您的數據庫是您的應用服務器的本地數據,則要少得多。 隨着批量大小的增加,回報逐漸減少,因為網絡等待所花費的總時間很快就會下降,所以通常不會強調嘗試盡可能大地批量生產。

如果您正在批量加載數據,請認真考慮使用COPY API,通過PgJDBC的CopyManager ,通過PgConnection接口獲取。 它允許您將類似CSV的數據流式傳輸到服務器,以便通過極少的客戶端/服務器往返快速批量加載。 不幸的是,它的記錄顯着不足 - 它根本沒有出現在主要的PgJDBC文檔中, 只出現在API文檔中

除了內存問題,AFAIK沒有限制。 關於你的問題:語句僅在執行批處理時發送到數據庫,因此在你執行批處理之前,內存將繼續增長,直到你得到JavaHeapSpace或批處理將被發送到數據庫。

根據JDBC實現,可能存在最大數量的參數標記。

例如,PostgreSQL驅動程序將參數數量表示為2字節整數 ,在Java中最多為32768。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM