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

SQLAlchemy Core masseindsættelse langsomt

Jeg blev sur, da jeg så, at dette ikke havde et svar... Jeg løb ind i præcis det samme problem forleden dag:Jeg forsøgte at masseindsætte omkring millioner af rækker til en Postgres RDS-instans ved hjælp af CORE. Det tog timer .

Som en løsning endte jeg med at skrive mit eget bulk-insert-script, der genererede selve den rå sql:

bulk_insert_str = []
for entry in entry_list:
    val_str = "('{}', '{}', ...)".format(entry["column1"], entry["column2"], ...)
    bulk_insert_str.append(val_str)

engine.execute(
    """
    INSERT INTO my_table (column1, column2 ...)
    VALUES {}
    """.format(",".join(bulk_insert_str))
)

Selvom det var grimt, gav dette mig den præstation, vi havde brug for (~500.000 rækker/minut)

Fandt du en CORE-baseret løsning? Hvis ikke, håber dette hjælper!

OPDATERING:Endte med at flytte mit gamle script til en ekstra EC2-instans, som vi ikke brugte, hvilket faktisk løste problemet med langsom ydeevne. Ikke sikker på, hvad din opsætning er, men der er tilsyneladende en netværksoverhead ved kommunikation med RDS fra en ekstern (ikke-AWS) forbindelse.



  1. Adressering af Drop Column Bug i Oracle 18c og 19c

  2. Deaktiver og aktiver senere alle tabelindekser i Oracle

  3. Hvordan kombinerer jeg data fra to separate tabeller til en enkelt markør?

  4. Sådan implementeres MySQL på Ubuntu og fuldt administreret