PgJDBC има някои ограничения по отношение на партидите:
-
Всички стойности на заявките и всички резултати трябва да бъдат натрупани в паметта. Това включва резултати с големи петна/буци. Така че свободната памет е основният ограничаващ фактор за размера на пакета.
-
До PgJDBC 9.4 (все още не е пуснат) , партидите, които връщат генерирани ключове, винаги извършват двупосочно пътуване за всеки запис , така че не са по-добри от изпълнението на отделни изрази.
-
Дори в 9.4 партидите, които връщат генерирани ключове, предлагат полза само ако генерираните стойности са ограничени по размер. Един
text
,bytea
или неограниченvarchar
полето в искания резултат ще принуди драйвера да направи двупосочно пътуване за всяко изпълнение .
Ползата от групирането е намаляване на обиколките по мрежата. Така че има много по-малко смисъл, ако вашата DB е локална за вашия сървър за приложения. Има намаляваща възвращаемост с увеличаване на размера на пакета, тъй като общото време, необходимо за изчакване в мрежата, намалява бързо, така че често не е натоварващо да се опитвате да направите партиди възможно най-големи.
Ако зареждате групово данни, сериозно обмислете използването на COPY
API вместо това чрез CopyManager
на PgJDBC , получен чрез PgConnection
интерфейс. Позволява ви да предавате CSV-подобни данни към сървъра за бързо масово зареждане с много малко двупосочни обиколки клиент/сървър. За съжаление е изключително недостатъчно документиран - изобщо не се появява в основните документи на PgJDBC, само в документите за API
.