AFAIK no es un procesamiento por lotes del lado del servidor en el fe/be protocolo
, por lo que PgJDBC no puede usarlo. . Actualizar :Bueno, estaba equivocado. PgJDBC (preciso a partir de 9.3) sí enviar lotes de consultas al servidor si no necesita recuperar las claves generadas . Simplemente pone en cola un montón de consultas en el búfer de envío sin sincronizarse con el servidor después de cada consulta individual.
Ver:
- Problema n.° 15:habilitar el procesamiento por lotes al devolver claves generadas
- Problema #195:PgJDBC no canaliza lotes que devuelven claves generadas
Incluso cuando se solicitan claves generadas, la consulta extendida protocolo se utiliza para garantizar que no sea necesario enviar el texto de la consulta cada vez, solo los parámetros.
Francamente, el procesamiento por lotes de JDBC no es una gran solución en ningún caso. Es fácil de usar para el desarrollador de la aplicación, pero tiene un rendimiento bastante inferior al óptimo, ya que el servidor todavía tiene que ejecutar cada declaración individualmente, aunque no analizar. y planificar individualmente siempre y cuando use declaraciones preparadas.
Si la confirmación automática está activada, el rendimiento será absolutamente patético porque cada instrucción desencadena una confirmación. Incluso con la confirmación automática desactivada, la ejecución de muchas declaraciones pequeñas no será particularmente rápida, incluso si pudiera eliminar los retrasos de ida y vuelta.
Una mejor solución para muchas UPDATE
simples s puede ser para:
COPY
nuevos datos en unTEMPORARY
oUNLOGGED
mesa; y- Utilice
UPDATE ... FROM
paraUPDATE
con unJOIN
contra la tabla copiada
Para COPY, consulte los documentos de PgJDBC
y el COPY
documentación en los documentos del servidor
.
A menudo encontrará que es posible modificar las cosas para que su aplicación no tenga que enviar todos esos UPDATE
individuales s en absoluto.