AFAIK není žádné dávkování na straně serveru v fe/be protokol
, takže jej PgJDBC nemůže použít. . Aktualizovat :No, mýlil jsem se. PgJDBC (přesné od 9.3) dělá odesílat dávky dotazů na server pokud nepotřebuje načítat vygenerované klíče . Prostě zařadí spoustu dotazů do vyrovnávací paměti pro odesílání, aniž by se po každém jednotlivém dotazu synchronizoval se serverem.
Viz:
- Problém č. 15:Povolit dávkování při vracení vygenerovaných klíčů
- Problém č. 195:PgJDBC nezprostředkovává dávky, které vracejí vygenerované klíče
I když jsou požadovány vygenerované klíče, rozšířený dotaz protokol se používá k zajištění toho, že text dotazu není nutné pokaždé zasílat, pouze parametry.
Upřímně řečeno, dávkování JDBC není v žádném případě skvělé řešení. Pro vývojáře aplikací je to snadné, ale z hlediska výkonu není optimální, protože server musí stále provádět každý příkaz samostatně – i když ne analyzovat a plánovat jednotlivě, pokud používáte připravené příkazy.
Pokud je automatické potvrzení zapnuto, výkon bude naprosto žalostný, protože každý příkaz spustí potvrzení. I když je automatické potvrzení vypnuto, spousta malých příkazů nebude příliš rychlá, i když byste mohli eliminovat zpáteční zpoždění.
Lepší řešení pro spoustu jednoduchých UPDATE
s může být:
COPY
nová data doTEMPORARY
neboUNLOGGED
stůl; a- Použijte
UPDATE ... FROM
doUPDATE
sJOIN
proti zkopírované tabulce
Pro COPY viz dokumenty PgJDBC
a COPY
dokumentaci v dokumentech serveru
.
Často zjistíte, že je možné věci vyladit, aby vaše aplikace nemusela posílat všechny jednotlivé UPDATE
s vůbec.