PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQLAlchemy Core-Masseneinfügung langsam

Ich war verblüfft, als ich sah, dass dies keine Antwort hatte ... Ich bin neulich auf genau das gleiche Problem gestoßen:Ich habe versucht, Millionen von Zeilen per Bulk-Einfügung in eine Postgres-RDS-Instanz mit CORE einzufügen. Es dauerte Stunden .

Als Problemumgehung schrieb ich schließlich mein eigenes Bulk-Insert-Skript, das das rohe SQL selbst generierte:

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))
)

Das war zwar hässlich, gab mir aber die Leistung, die wir brauchten (ca. 500.000 Zeilen/Minute)

Haben Sie eine CORE-basierte Lösung gefunden? Wenn nicht, hoffe das hilft!

UPDATE:Am Ende habe ich mein altes Skript in eine Ersatz-EC2-Instanz verschoben, die wir nicht verwendet haben, wodurch das Problem mit der langsamen Leistung tatsächlich behoben wurde. Ich bin mir nicht sicher, wie Ihr Setup aussieht, aber anscheinend gibt es einen Netzwerk-Overhead bei der Kommunikation mit RDS über eine externe (Nicht-AWS-) Verbindung.