AUTONOMOUS_TRANSACTION

时间:2009-08-26 14:55:44

标签: sql oracle plsql

我在考虑使用AUTONOMOUS_TRANSACTION Pragma进行批处理中的某些日志记录。有人对这个有经验么 ?若有,任何利弊都会受到赞赏。

2 个答案:

答案 0 :(得分:17)

IMO自治事务特别适用于日志记录:它们独立于主会话运行,这意味着您可以在表中写入,提交或回滚更改,而不会影响主事务。

它们也增加了很少的开销:如果你运行大型语句并在每个语句之间添加一个自治事务,性能成本可以忽略不计。

还有一个您可能感兴趣的副作用:由于自主事务处于调用事务的独立会话中,因此您可以在运行时跟踪主进程的进度。您不必等待主事务完成:您可以查询日志表,因为它由自治事务填充。

答案 1 :(得分:3)

显然,即使主事务回滚,在自治事务中完成的任何日志记录都将保留在数据库中。对于日志记录,这可能是您想要的,但重要的是要记住,“将行X插入表Y”的日志记录并不意味着该插入实际上已提交。