sql >> Database >  >> RDS >> PostgreSQL

Postgres pl/java waarschuwingen

Vanaf mijn ervaring heeft pl/java enkele grote problemen:

  1. Het is moeilijk om het op een postgresql-server te installeren. Zelfs als je binaire build voor je postgresql-versie vindt (wat ook moeilijk is) - het vereist wat jongleren met configuratie- en bibliotheekpaden.
  2. Eerste aanroep naar Java-opgeslagen procedure resulteert in een nieuw JVM-proces. JVM-processen hebben een verbindingsbereik en vereisen een bepaalde hoeveelheid geheugen voor java-heap, dus als u een verbindingspool gebruikt, krijgt u uiteindelijk 10-20 JVM's die zijn gestart en meestal ongebruikt, waardoor uw server-RAM wordt verbruikt
  3. pl/java kan communiceren met de postgresql-database met behulp van een zelfgemaakte JDBC-driver die algemeen JDBC-gebruik emuleert, maar heeft enkele implementatieproblemen die u misschien zullen verbazen. Vooral als je JDBC-cursors of andere niet-algemene dingen wilt gebruiken.
  4. pl/java-logging is nogal speciaal - het komt door de interne foutafhandelingsimplementatie van postgresql. Als u bijvoorbeeld iets logt met java logging api op ERROR-logniveau, wordt uw serververbinding verbroken.
  5. pl/java heeft zeer goede gegevensverwerkingsprestaties in vergelijking met op applicatieserver gebaseerde java-logica, maar het is totaal onschaalbaar - pl/java-procedures zijn volledig single-threaded - postgresql verbiedt multi-threaded procedures
  6. Als je een interne JDBC-driver gebruikt en je SQL-statement bevat fouten - je krijgt een cryptische foutmelding in het postgresql-logboek - totaal niet gerelateerd aan het echte probleem.

Als resultaat:je kunt pl/java-procedures met enig succes gebruiken, maar je moet het heel voorzichtig doen en waarschijnlijk moet je nadenken over het verbeteren van je applicatie-ontwerp.



  1. Waarom zou MySQL return None uitvoeren?

  2. Update mysql-tabel automatisch elke vierentwintig uur

  3. Aanbevolen manier/volgorde om gegevens van een webservice te lezen, die gegevens te ontleden en in een SQLite-database in te voegen

  4. Hoe kan ik MySQL-queryresultaten in CSV-indeling uitvoeren?