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

Słaba wydajność zapisu dataframe do Postgresql

Odpowiadając osobiście na pytanie 1:Wygląda na to, że problem miał więcej wspólnego z Postgresql (a raczej bazami danych w ogóle). Biorąc pod uwagę punkty przedstawione w tym artykule:https://use-the- index-luke.com/sql/dml/insert Znalazłem następujące:

1) Usunięcie wszystkich indeksów z tabeli docelowej spowodowało uruchomienie zapytania w ciągu 9 sekund. Odbudowa indeksów (w postgresql) zajęła kolejne 12 sekund, więc w innych czasach wciąż znacznie mniej.

2) Mając na miejscu tylko klucz podstawowy, wstawianie wierszy uporządkowanych według kolumn klucza podstawowego skróciło czas do około jednej trzeciej. Ma to sens, ponieważ wymagane jest niewielkie lub żadne tasowanie wierszy indeksu. Sprawdziłem również, że to jest powód, dla którego moje złącze kartezjańskie w postgresql było przede wszystkim szybsze (tzn. wiersze zostały uporządkowane według indeksu, czysto przypadkowo), umieszczając te same wiersze w tabeli tymczasowej (nieuporządkowane) i wstawiając z tego faktycznie trwało to dłużej.

3) Próbowałem podobnych eksperymentów na naszych systemach mysql i odkryłem taki sam wzrost szybkości wstawiania podczas usuwania indeksów. Z mysql jednak wydawało się, że odbudowa zużytych indeksów zyskała na czasie.

Mam nadzieję, że pomoże to każdemu, kto natrafi na to pytanie podczas wyszukiwania.

Nadal zastanawiam się, czy możliwe jest usunięcie kroku zapisu do csv w pythonie (Q2 powyżej), ponieważ wierzę, że mógłbym wtedy napisać coś w pytonie, co byłoby szybsze niż czysty postgresql.

Dzięki, Giles




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak odczytać usługę REST, która zwraca obiekt JSON i zapisać go w PostgreSQL za pomocą Mule ESB, Mule Studio

  2. Jak bezpiecznie uciec od dowolnych ciągów znaków dla SQL w PostgreSQL za pomocą Javy?

  3. Błąd w Spring Data JPA:Spring Data zwraca List<BigInteger> zamiast List<Long>

  4. Nieskończona pętla w funkcji wyzwalania

  5. Skonfiguruj opakowanie danych obcych Mysql w Postgresql