Stavo pensando di utilizzare AUTONOMOUS_TRANSACTION Pragma per alcuni logging in un processo batch. Qualcuno ha qualche esperienza con questo? Se così fosse, qualsiasi apprezzamento e svantaggio sarebbe apprezzato.AUTONOMOUS_TRANSACTION
risposta
transazioni IMO autonome sono particolarmente adatti per la registrazione: corrono indipendentemente dalla sessione principale, significa che è possibile scrivere in una tabella, commit o rollback modifiche senza influenzare la transazione principale.
Inoltre, essi aggiungono un overhead minimo: se si esegue grandi dichiarazioni e aggiungere una transazione autonoma tra ogni istruzione il costo delle prestazioni sarà trascurabile.
C'è anche un effetto collaterale che potresti trovare interessante: poiché le transazioni autonome sono in sessioni indipendenti dalla transazione chiamante, puoi seguire la progressione del tuo processo principale mentre è in esecuzione. Non è necessario attendere il completamento della transazione principale: è possibile interrogare la tabella di registrazione poiché viene riempita dalle transazioni autonome.
Ovviamente, qualsiasi registrazione effettuata in una transazione autonoma rimarrà nel database anche se la transazione principale viene ripristinata. Per la registrazione questo è probabilmente ciò che si desidera, ma è importante ricordare che un record di registro che dice "inserito la riga X nella tabella Y" non significa che l'inserto sia stato effettivamente impegnato.
Non c'è altro da dire. – Christian13467