PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

jdbc партидна производителност

AFAIK не е пакетиране от страна на сървъра в fe/be протокол , така че PgJDBC не може да го използва. . Актуализиране :Е, грешах. PgJDBC (точно към 9.3) прави изпращайте партиди от заявки към сървъра ако няма нужда да извлича генерирани ключове . Той просто подрежда куп заявки в буфера за изпращане, без да се синхронизира със сървъра след всяка отделна заявка.

Вижте:

Дори когато се изискват генерирани ключове, разширената заявка протокол се използва, за да се гарантира, че не е необходимо текстът на заявката да се изпраща всеки път, а само параметрите.

Честно казано, JDBC пакетирането не е чудесно решение във всеки случай. Лесен е за използване от програмиста на приложението, но е доста неоптимален за производителност, тъй като сървърът все още трябва да изпълнява всеки оператор поотделно - макар и не парсиране и план ги поотделно, стига да използвате подготвени отчети.

Ако autocommit е включен, производителността ще бъде абсолютно жалка, защото всеки израз задейства ангажимент. Дори и при изключен автоматичен ангажимент, много малки изрази няма да бъдат особено бързи, дори ако можете да елиминирате двупосочните закъснения.

По-добро решение за много прости UPDATE s може да бъде към:

  • COPY нови данни във TEMPORARY или UNLOGGED маса; и
  • Използвайте UPDATE ... FROM до UPDATE с JOIN срещу копираната таблица

За КОПИРАНЕ вижте документите на PgJDBC и COPY документация в сървърните документи .

Често ще откриете, че е възможно да промените нещата, така че приложението ви да не трябва да изпраща всички тези отделни UPDATE изобщо.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Заявката на SQLAlchemy показва грешка Не може да присъедини таблица/избираеми „работни потоци“ към себе си

  2. Използване на SQL като xlookup

  3. Как да използвам индекс в чужда таблица SELECT MAX(id) заявка в PostgreSQL?

  4. Postgres JOIN с unnest

  5. Неуспешно удостоверяване на паролата за postgres контейнера на Docker