sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgres pl/java advarsler

Fra min erfaring har pl/java nogle store problemer:

  1. Det er svært at installere det på en postgresql-server. Selvom du finder binær build til din postgresql-version (hvilket også er svært) - det har brug for nogle konfigurations- og bibliotekssti-jonglering.
  2. Første kald til den lagrede Java-procedure vil resultere i en ny JVM-proces. JVM-processer er forbindelsesbaserede og kræver en vis mængde hukommelse til java-heap, så hvis du bruger forbindelsespulje, ender du med 10-20 JVM'er, der er startet og ubrugte det meste af tiden, hvilket forbruger din server-RAM
  3. pl/java kan kommunikere med postgresql-databasen ved hjælp af selvfremstillet JDBC-driver, som emulerer almindelig JDBC-brug, men har nogle implementeringsproblemer, som kan overraske dig. Især hvis du vil bruge JDBC cusrors eller andre ikke så almindelige ting.
  4. pl/java-logning er ret speciel - det er på grund af postgresql intern fejlhåndteringsimplementering. For eksempel - hvis du logger noget med java logging api på ERROR log niveau - vil det afslutte din serverforbindelse.
  5. pl/java har en meget god databehandlingsydelse sammenlignet med applikationsserver-baseret java-logik, men den er fuldstændig uskalerbar - pl/java-procedurer er fuldt enkelt-trådede - postgresql forbyder flertrådede procedurer
  6. Hvis du bruger intern JDBC-driver, og din SQL-sætning indeholder fejl - vil du ende med en kryptisk fejlmeddelelse i postgresql-loggen - fuldstændig uden relation til det virkelige problem.

Som et resultat - du kan bruge pl/java-procedurer med en vis succes, men du skal gøre det meget omhyggeligt, og du skal sandsynligvis tænke på at forbedre dit applikationsdesign.



  1. SQLAlchemy Text Matching-data inde i JSON-feltet med UTF-8

  2. Hvordan indsætter man specialtegn i en database?

  3. ingen forbindelsespulje med primær fundet

  4. org.hibernate.HibernateException:Gem er ikke gyldig uden aktiv transaktion