我的一个FACT表遇到了问题。 通过同样的工作, 我调用一个过程来加载这个FACT表,然后调用第二个过程来收集这个事实表上的统计数据。
作为新要求的一部分,我需要创建一个连接索引,该索引还包括上面提到的事实表。
我相信只要任何涉及的表发生变化,就会执行连接索引。那么在上面的场景中会发生什么?。我的收集统计程序会等待连接索引执行完成。还是会有任何争用因为收集统计数据和加入指数的同时发生
此致 Anoop
答案 0 :(得分:0)
当ETL处理添加,更改或删除Join Index引用的表中的数据时,Teradata将自动维护Join Index。如果将DDL更改应用于连接索引中引用的表,这些表将影响参与连接索引的列,或者您可以删除连接索引中引用的表,则必须删除连接索引。
在Fact表的ETL完成之后或在常规统计维护期间,应保留Join Index或Fact表上的统计信息收集。无论是在每个ETL过程之后收集统计信息还是仅在常规统计信息维护期间收集统计信息,都取决于事实表中每个ETL周期中有多少数据发生变化。我猜想如果你要创建一个连接索引来提高查询事实表的性能,你可能不需要在每个ETL循环后在同一个事实表上收集统计数据,除非这个ETL循环是每月或每季度的ETL过程。 JI和事实表上的统计信息收集可以并行运行。 COLLECT STATS所需的锁定不高于READ。 (实际上它可能是一个ACCESS锁。)
根据您发布的Teradata,您可以利用THRESHOLD选项来允许优化器确定是否确实需要收集统计信息。我相信这是Teradata 14中的一部分,它是Teradata 14.10中引入的自动统计维护的踏脚石。