当我通过CTAS(创建表AS)创建一个表时,在一个或多个包含百万条记录的基表的帮助下。然后我可以看到瞬态数据被保存到/ nzscratch/tmp dir或者我可以说在CTAS操作期间,除非它完成,否则nzscratch/tmp将继续填充。一旦CTAS成功,所有东西都会从/ nzscratch/tmp目录中清除。netezza消费/ nzscratch中的CTAS操作
所以我想知道它是否是预期的行为?
第二件事:同样的概念适用于运行任何长期保持运行的正常查询,或者在这种情况下瞬态数据正在保存到内存一侧?
一个个CTA所产生的瞬态数据的例子:
CREATE TABLE T1 AS
SELECT track_seq,
MAX(campaign_label) AS campaign_label,
MAX(creative_label) AS creative_label,
MAX(lob_label) AS lob_label,
MAX(placement_label) AS placement_label,
MAX(site_label) AS site_label
FROM (
SELECT *
FROM master_test
UNION
SELECT *
FROM labels_test_1
)
a
GROUP BY 1;
相关DDL:
CREATE TABLE admin.master_test
(
track_seq character varying(40),
campaign_label character varying(200),
creative_label character varying(200),
lob_label character varying(200),
placement_label character varying(200),
site_label character varying(200)
)
DISTRIBUTE ON (track_seq)
;
CREATE TABLE admin.labels_test_1
(
track_seq character varying(40),
campaign_label character varying(200),
creative_label character varying(200),
lob_label character varying(200),
placement_label character varying(200),
site_label character varying(200)
)
DISTRIBUTE ON (track_seq)
;
感谢Scott的回复。 下面的查询在/ nzscratch/tmp目录中生成大量瞬态数据AS creative_label,MAX(lob_label)AS lob_label,MAX(placement_label)AS campaign_label,MAX(creative_label)AS creative_label,MAX(lob_label)AS lob_label,MAX )AS placement_label,MAX(site_label)AS site_label FROM(SELECT * FROM master_test UNION SELECT * FROM labels_test_1)a GROUP BY 1 这里这2个基表包含500M和300M记录。 这是什么原因?我无法理解。 请帮忙。 – Kapish
我猜想暂态数据来自UNION,必须进行重复检测。 master_test和labels_test_1分发了哪些列? – ScottMcG
这里是表定义: CREATE TABLE admin.master_test(track_seq字符变化(40),campaign_label字符变化(200),creative_label字符变化(200),lob_label字符变化(200),placement_label字符变化(200),site_label字符变化(200))DISTRIBUTE ON(track_seq); CREATE TABLE管理员。DISTRIBUTE ON(track_seq);标签_test_1(track_seq字符变化(40),campaign_label字符变化(200),creative_label字符变化(200),lob_label字符变化(200),placement_label字符变化(200),site_label字符变化(200)根据您提供的信息, – Kapish