PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Wstawianie zbiorcze SQLAlchemy Core wolno

Byłem zdumiony, gdy zobaczyłem, że nie ma odpowiedzi... Niedawno natknąłem się na dokładnie ten sam problem:próba zbiorczego wstawienia około milionów wierszy do wystąpienia Postgres RDS za pomocą CORE. Zajęło to godziny .

Jako obejście, napisałem własny skrypt do zbiorczego wstawiania, który generował sam surowy 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))
)

Choć brzydkie, dało mi to wydajność, której potrzebowaliśmy (~500 000 wierszy na minutę)

Czy znalazłeś rozwiązanie oparte na CORE? Jeśli nie, miej nadzieję, że to pomoże!

AKTUALIZACJA:Skończyło się na przeniesieniu mojego starego skryptu do wolnej instancji EC2, której nie używaliśmy, co faktycznie naprawiło problem z niską wydajnością. Nie masz pewności, jaka jest twoja konfiguracja, ale najwyraźniej istnieje obciążenie sieci podczas komunikacji z RDS z połączenia zewnętrznego (nie AWS).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwracany wiersz SQL, jeśli nie znaleziono wyniku

  2. Walidacja unikatowości w bazie danych, gdy walidacja ma warunek na innej tabeli

  3. Docker — Jak uruchomić polecenie psql w kontenerze postgres?

  4. Ograniczenie upuszczania PostgreSQL o nieznanej nazwie

  5. ImportError podczas uruchamiania cgi-bin na localhost - niezdefiniowany symbol:lo_truncate64