目前,我看到了一个 ETL 流程,其中用户创建了用于存储中间结果的表,然后在 ETL 流程结束时删除这些表。
乍一看,这似乎不是正确的做法,因为我一直都知道这应该通过临时表来完成,但是当涉及到与用户争论为什么他应该使用临时表来进行推理时普通表(最后下降)我找不到任何理由。
目前,我看到了一个 ETL 流程,其中用户创建了用于存储中间结果的表,然后在 ETL 流程结束时删除这些表。
乍一看,这似乎不是正确的做法,因为我一直都知道这应该通过临时表来完成,但是当涉及到与用户争论为什么他应该使用临时表来进行推理时普通表(最后下降)我找不到任何理由。
临时表通常具有以下优点:
可以关闭对它们的 DML 操作的日志记录,从而减少系统上的 I/O 负载(在事务异常终止的情况下可能会丢失其中的数据)。
临时表中的数据仅对插入这些数据的会话可见,即使多个会话同时引用同一个全局临时表;每个会话都有自己的临时表的物化副本。这提高了处理敏感数据时的安全性。
临时表中的数据会在事务或会话结束时自动删除,具体取决于表定义,从而使您不必手动执行此操作。此操作也不会被记录(即再次减少 I/O)。
另一方面,与常规表相比,临时表有一些功能限制(例如,可能不支持某些类型的约束),因此如果您的 ETL 流程需要此类功能,则不能使用它们。