我在考虑在批处理过程中使用AUTONOMOUS_TRANSACTION Pragma进行一些日志记录。有人有相关经验吗?如果有的话,欢迎分享优缺点。
IMO自主事务特别适用于日志记录:它们独立于主会话运行,这意味着您可以在表中写入、提交或回滚更改,而不影响主事务。
它们还添加了很少的开销:如果您运行大型语句并在每个语句之间添加一个自主事务,则性能成本将是可忽略的。
还有一个可能会让您感到有趣的副作用:由于自主事务与调用事务的会话相互独立,因此您可以随着主过程的运行跟踪其进度。您无需等待主事务完成:您可以查询由自主事务填充的日志表。
显然,在自主事务中记录的任何日志都将保留在数据库中,即使主事务回滚。 对于记录日志来说,这可能是您想要的,但重要的是要记住,记录“将行X插入表Y”并不意味着该插入实际上已提交。