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

Scrittura del dataframe su Postgresql con prestazioni scadenti

Rispondendo personalmente alla Q 1:Sembra che il problema abbia più a che fare con Postgresql (o meglio con i database in generale). Tenendo conto dei punti espressi in questo articolo:https://use-the- index-luke.com/sql/dml/insert Ho trovato quanto segue:

1) La rimozione di tutti gli indici dalla tabella di destinazione ha comportato l'esecuzione della query in 9 secondi. La ricostruzione degli indici (in postgresql) ha richiesto altri 12 secondi, quindi ancora ben al di sotto delle altre volte.

2) Con solo una chiave primaria in atto, l'inserimento di righe ordinate in base alle colonne della chiave primaria ha ridotto il tempo impiegato a circa un terzo. Questo ha senso in quanto dovrebbe esserci poca o nessuna mescolanza delle righe dell'indice richieste. Ho anche verificato che questo è il motivo per cui il mio join cartesiano in postgresql è stato in primo luogo più veloce (IE le righe sono state ordinate dall'indice, per puro caso), posizionando le stesse righe in una tabella temporanea (non ordinata) e inserendo da quella in realtà ha impiegato più tempo.

3) Ho provato esperimenti simili sui nostri sistemi MySQL e ho riscontrato lo stesso aumento della velocità di inserimento durante la rimozione degli indici. Con mysql invece sembrava che la ricostruzione degli indici consumasse il tempo guadagnato.

Spero che questo aiuti chiunque altro si imbatte in questa domanda da una ricerca.

Mi chiedo ancora se sia possibile rimuovere il passaggio di scrittura su csv in python (Q2 sopra) poiché credo che potrei quindi scrivere qualcosa in python che sarebbe più veloce del puro postgresql.

Grazie, Giles