Lavoro su un sistema che scarica i dati da un sistema cloud in un database locale (PostgreSQL, MySQL, ...). Ora ho un problema con le prestazioni di PostgreSQL perché ci vuole un sacco di tempo per inserire i dati.Inserimento lento su PostgreSQL utilizzando JDBC
Un numero di colonne e la dimensione dei dati possono variare. In un progetto di esempio, ho una tabella con ca. 170 colonne. C'è un indice univoco, ma anche dopo aver perso l'indice la velocità dell'inserto non è cambiata.
Sto utilizzando il driver JDBC per connettermi al database e sto inserendo i dati in batch di 250 righe (utilizzando NamedParameterJdbcTemplate).
Mi ci sono voluti ca. 18 secondi per inserire i dati su Postgres. Lo stesso set di dati su MySQL mi ha richiesto solo un secondo. Questa è un'enorme differenza - da dove viene? Il driver Postgres JDBC è lento? Può essere configurato in qualche modo per renderlo più veloce? Mi manca qualcos'altro? La differenza tra Postgres e MySQL è così grande. Altre idee su come renderlo più veloce?
Ho creato un progetto di esempio disponibile su Github - https://github.com/varad/postgresql-vs-mysql. Tutto avviene in LetsGo class nel metodo "run".
potresti abilitare più debug per vedere cosa è effettivamente lento? (inserire, commettere, connettere)? per il debug in java (per driver) loglevel = 2 (https://jdbc.postgresql.org/documentation/80/connect.html) per la registrazione lato server https://www.drupal.org/node/560192 –
Di quali versioni stiamo parlando? Hai provato con una transazione? – m0skit0
Inoltre, hai provato a fare retromarcia e inseriscilo su MySQL per primo e vedi cosa succede (come 'letsGo.run (Type.MYSQL); letsGo.run (Type.POSTGRES);')? Inoltre, come stai controllando i tempi? – m0skit0