PgJDBC má určitá omezení týkající se dávek:
-
Všechny hodnoty požadavků a všechny výsledky musí být akumulovány v paměti. To zahrnuje výsledky velkých blob/clob. Volná paměť je tedy hlavním limitujícím faktorem pro velikost dávky.
-
Do PgJDBC 9.4 (zatím nevydáno) , dávky, které vracejí vygenerované klíče, vždy provedou zpáteční cestu pro každý záznam , takže nejsou o nic lepší než provádění jednotlivých příkazů.
-
Dokonce i v 9.4 nabízejí dávky, které vracejí vygenerované klíče, pouze výhodu, pokud jsou generované hodnoty omezeny velikostí. Jeden
text
,bytea
nebo neomezenývarchar
pole v požadovaném výsledku přinutí řidiče provést okružní jízdu pro každé provedení .
Výhodou dávkování je snížení počtu zpátečních cest sítě. Takže pokud je vaše DB lokální na vašem aplikačním serveru, má to mnohem menší smysl. S rostoucí velikostí dávky se snižuje návratnost, protože celková doba čekání v síti rychle klesá, takže často není práce stresující se snahou udělat dávky co největší.
Pokud načítáte data hromadně, vážně zvažte použití COPY
API místo toho prostřednictvím CopyManager
PgJDBC , získaného prostřednictvím PgConnection
rozhraní. Umožňuje streamovat data podobná CSV na server pro rychlé hromadné načítání s velmi malým počtem zpátečních cest klient/server. Bohužel je to pozoruhodně nedostatečně zdokumentováno – v hlavních dokumentech PgJDBC se vůbec neobjevuje, pouze v dokumentech API
.