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

wydajność wsadowa jdbc

AFAIK nie jest grupowaniem po stronie serwera w fe/be protokół , więc PgJDBC nie może go użyć. . Aktualizuj :Cóż, myliłem się. PgJDBC (dokładne od 9.3) tak wysyłaj partie zapytań na serwer jeśli nie musi on pobierać wygenerowanych kluczy . Po prostu kolejkuje kilka zapytań w buforze wysyłania bez synchronizacji z serwerem po każdym pojedynczym zapytaniu.

Zobacz:

Nawet w przypadku żądania wygenerowanych kluczy rozszerzone zapytanie protokół służy do zapewnienia, że ​​tekst zapytania nie musi być wysyłany za każdym razem, tylko parametry.

Szczerze mówiąc, wsadowe JDBC nie jest w żadnym wypadku świetnym rozwiązaniem. Jest łatwy w użyciu dla programisty aplikacji, ale dość nieoptymalny pod względem wydajności, ponieważ serwer nadal musi wykonywać każdą instrukcję osobno — ale nie parsować i plan je indywidualnie, o ile korzystasz z przygotowanych wyciągów.

Jeśli autocommit jest włączone, wydajność będzie absolutnie żałosna, ponieważ każda instrukcja wyzwala zatwierdzenie. Nawet przy wyłączonym automatycznym zatwierdzaniu wiele małych instrukcji nie będzie szczególnie szybkie, nawet jeśli można wyeliminować opóźnienia w obie strony.

Lepsze rozwiązanie dla wielu prostych UPDATE s może być:

  • COPY nowe dane do TEMPORARY lub UNLOGGED stół; i
  • Użyj UPDATE ... FROM do UPDATE z JOIN na skopiowanej tabeli

W przypadku KOPII zobacz dokumentacja PgJDBC i COPY dokumentacja w dokumentacji serwera .

Często zdarza się, że można coś zmienić, aby Twoja aplikacja nie musiała wysyłać tych wszystkich pojedynczych UPDATE w ogóle.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ulepszenia raportowania postępów w PostgreSQL 12

  2. Aktualizacja Postgres z lewego przyłączenia

  3. Jak wstawić do tabeli wartości z dwóch tablic w Postgresie?

  4. Wybierz dziwne znaki w tekście, nie działa z operatorem LIKE

  5. Docker - Postgres i pgAdmin 4 :Połączenie odrzucone