我正在运行一系列测试来了解每个DWU的吞吐量。我有八(8)个场景改变了ETL方法(CTAS vs INSERT / SELECT),改变了输入表类型(堆与列之间),并改变了输出表类型(堆与列之间)。
出乎意料的是,使用柱状输入表,使用INSERT / SELECT或CTAS写入柱状输出表产生相同的吞吐量(每个DWU每秒8,100行)。
为什么没有与#34;完整记录相关的惩罚?#34; INSERT / SELECT构造?
吉文斯:
INSERT / SELECT脚本:
CREATE TABLE
etl_schema_name.fact_table_benchmark_testing
(
column_1 INTEGER NOT NULL
,column_2 INTEGER NOT NULL
,column_3 SMALLINT NOT NULL
,column_4 SMALLINT NOT NULL
,column_5 INTEGER NOT NULL
,column_6 DECIMAL(9,4) NOT NULL
,column_7 DECIMAL(9,2) NOT NULL
,column_8 SMALLINT NOT NULL
,column_9 CHAR(1) NOT NULL
,column_10 SMALLINT NOT NULL
,column_11 DECIMAL(9,2) NOT NULL
,column_12 DECIMAL(9,2) NOT NULL
,column_13 DECIMAL(9,2) NOT NULL
,column_14 DECIMAL(9,2) NOT NULL
,column_15 DECIMAL(9,2) NOT NULL
,column_16 DECIMAL(9,2) NOT NULL
,column_17 DECIMAL(9,2) NOT NULL
)
WITH
(
DISTRIBUTION = HASH ( column_2 )
)
;
GO
insert into
etl_schema_name.fact_table_benchmark_testing
(
column_1
,column_2
,column_3
,column_4
,column_5
,column_6
,column_7
,column_8
,column_9
,column_10
,column_11
,column_12
,column_13
,column_14
,column_15
,column_16
,column_17
)
select
column_1
,column_2
,column_3
,column_4
,column_5
,column_6
,column_7
,column_8
,column_9
,column_10
,column_11
,column_12
,column_13
,column_14
,column_15
,column_16
,column_17
FROM
production_schema_name.fact_table
;
GO
CTAS脚本
CREATE TABLE
etl_schema_name.fact_table_benchmark_testing_2
WITH
(
DISTRIBUTION = HASH ( column_2 )
)
as
select
column_1
,column_2
,column_3
,column_4
,column_5
,column_6
,column_7
,column_8
,column_9
,column_10
,column_11
,column_12
,column_13
,column_14
,column_15
,column_16
,column_17
FROM
production_schema_name.fact_table
;
GO
答案 0 :(得分:4)
INSERT ... SELECT不一定完全记录在SQLDW中。您有机会查看以下文章吗?