sql >> Databáze >  >> RDS >> PostgreSQL

Upozornění Postgres pl/java

Podle mých zkušeností má pl/java několik zásadních problémů:

  1. Je obtížné jej nainstalovat na server postgresql. I když najdete binární sestavení pro svou verzi postgresql (což je také obtížné) – vyžaduje to žonglování s konfigurací a knihovnou.
  2. První volání uložené procedury Java bude mít za následek nový proces JVM. Procesy JVM jsou v rozsahu připojení a vyžadují určité množství paměti pro hromadu java, takže pokud použijete fond připojení, skončíte s 10–20 spuštěnými a většinu času nevyužitými JVM, což spotřebovává RAM vašeho serveru
  3. pl/java může komunikovat s postgresql databází pomocí vlastního ovladače JDBC, který emuluje běžné použití JDBC, ale má určité problémy s implementací, které vás možná překvapí. Zvláště pokud chcete používat kurzory JDBC nebo jiné ne tak běžné věci.
  4. Protokolování pl/java je poněkud zvláštní – je to kvůli implementaci interního zpracování chyb postgresql. Například – pokud něco zaznamenáte pomocí rozhraní API pro protokolování java na úrovni protokolu ERROR – ukončí se připojení k serveru.
  5. pl/java má velmi dobrý výkon zpracování dat ve srovnání s logikou jazyka Java založená na aplikačním serveru, ale je zcela neškálovatelná – procedury pl/java jsou plně jednovláknové – postgresql zakazuje vícevláknové procedury
  6. Pokud používáte interní ovladač JDBC a váš příkaz SQL obsahuje chyby – skončíte se záhadnou chybovou zprávou v protokolu postgresql – zcela nesouvisející se skutečným problémem.

Výsledkem je, že můžete s určitým úspěchem používat procedury pl/java, ale musíte to dělat velmi opatrně a pravděpodobně budete muset přemýšlet o vylepšení návrhu své aplikace.



  1. Potřebujete vypsat všechny spouštěče v databázi SQL Server s názvem tabulky a schématem tabulky

  2. cx_Oracle s ověřováním Windows

  3. Podporuje některý ovladač JDBC příkaz LOAD DATA INFILE sql?

  4. Jak vložit sadu výsledků vrácenou uloženou procedurou Oracle do jiné tabulky pomocí druhé uložené procedury?