sql >> Databáze >  >> RDS >> PostgreSQL

Hromadné vkládání jádra SQLAlchemy je pomalé

Byl jsem naštvaný, když jsem viděl, že to nemá odpověď... Onehdy jsem narazil na úplně stejný problém:Pokusil jsem se hromadně vložit asi miliony řádků do instance Postgres RDS pomocí CORE. Trvalo to hodiny .

Jako řešení jsem nakonec napsal svůj vlastní skript hromadného vložení, který vygeneroval samotný nezpracovaný 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))
)

I když to bylo ošklivé, poskytlo mi to výkon, který jsme potřebovali (~500 000 řádků/minutu)

Našli jste řešení založené na CORE? Pokud ne, doufáme, že to pomůže!

AKTUALIZACE:Nakonec jsem přesunul svůj starý skript do náhradní instance EC2, kterou jsme nepoužívali, což ve skutečnosti vyřešilo problém s pomalým výkonem. Nejste si jisti, jaké je vaše nastavení, ale zjevně existuje síťová režie při komunikaci s RDS z externího připojení (bez AWS).



  1. Concat skupiny v SQL Server

  2. Odstranit řádek, pokud tabulka existuje SQL

  3. com.mysql.jdbc.exceptions.MySQLSyntaxErrorException při použití PreparedStatement

  4. MariaDB špatné pořadí, ale správné v MySQL