/ / Mise à jour de l'instruction préparée - amélioration des performances - java, performance, java-ee, jdbc, prepare-statement

Mise à jour des instructions préparées - amélioration des performances - java, performance, java-ee, jdbc, prepare-statement

J'ai une seule déclaration préparée par Oracle dans mon application qui va mettre à jour le statut d'environ 100 000 enregistrements dans la table d'un coup. Par exemple:

UPDATE <TABLE NAME> SET STATUS=SUCCESS" where STATUS="INIT"

La requête ci-dessus sera mise à jour autour de plus de100 000 enregistrements d'un coup. Existe-t-il un moyen d'améliorer les performances, comme définir la taille de la commande batch / fetch dans l'instruction préparée? comment puis-je le faire si j’utilise une requête préparée avec la requête ci-dessus que je n’exécuterai qu’une fois, car je ne définis aucun paramètre pour le traitement par lots?

Réponses:

0 pour la réponse № 1

Une façon d'optimiser consiste à ne pas exécuter une requête à la fois (car la latence du système par requête est trop lente, etc.).

Vous pouvez utiliser la mise à jour par lots.

Si vous utilisez Spring, utilisez batchUpdate

ou si vous traitez directement avec JDBC, utilisez

preparedStatement.addBatch();

preparedStatement.executeBatch();

0 pour la réponse № 2

Briser la mise à jour en plusieurs morceaux peut aideren divisant les mises à jour en plusieurs transactions mais je commencerais par la configuration de votre base de données. Si les mises à jour prennent beaucoup de temps, il est possible que la taille de votre journal ne soit pas suffisamment élevée. Il pourrait également y avoir des goulots d'étranglement sur le disque.