我最近被分配到一个使用Teradata的项目中。
有人告诉我严格使用DROP + CREATE而不是DELETE ALL,因为后者“以某种方式释放了一些空间”。这对我来说是违反直觉的,我认为这可能是错误的。我在网上搜索了这两种方法之间的比较,但没有发现任何结果。
这仅增强了我的信念,即DELETE ALL不会受到上述问题的困扰。
但是,如果是这种情况,我必须(在实践和理论上)证明这一点。

因此,我的问题是:这两种方法之间的空间分配是否有所不同?如果没有,是否有证明该文件的官方文件(用户指南,技术规格等)?

谢谢!

最佳答案

这里有一个讨论:http://teradataforum.com/teradata/20120403_105705.htm关于同一主题(尽管它并没有真正回答“以某种方式分配一些空间”部分)。他们实际上推荐DELETE ALL,但是出于其他(性能)原因:
我会引用以防万一链接失效:

“全部删除”将更快,尽管实际操作中它们的性能通常并没有太大差异。
但是,特别是对于定期运行的过程(例如每日批处理过程),我建议采用“全部删除”方法。这将减少工作量,因为它只会删除数据并将定义保留在原位。请记住,如果删除定义,则需要访问多个词典表,当然,当您重新创建对象时,您当然必须(通常)访问那些相同的表。
除了性能方面之外,放置/创建方法的缺点是,每次创建对象时,即使通过角色安全性和/或数据库级别控制对对象的后续访问,Teradata也会在AccessRights表中插入“默认行”安全。如您所知,AccessRights表可能很容易变大并且歪斜。以我的经验,许多站点都有一个定期清理该表的过程,并删除了多余的行。如果您的(通常是批处理)进程定期删除/创建对象,那么您只需在表中添加以前由干净进程删除的行,以后将由同一进程删除这些行。这听起来对我来说完全是浪费时间。

08-04 07:35
查看更多