CTAS vs INSERT / SELECT以清空Azure SQL数据仓库

时间:2017-01-10 22:50:06

标签: azure-sqldw

我正在运行一系列测试来了解每个DWU的吞吐量。我有八(8)个场景改变了ETL方法(CTAS vs INSERT / SELECT),改变了输入表类型(堆与列之间),并改变了输出表类型(堆与列之间)。

出乎意料的是,使用柱状输入表,使用INSERT / SELECT或CTAS写入柱状输出表产生相同的吞吐量(每个DWU每秒8,100行)。

为什么没有与#34;完整记录相关的惩罚?#34; INSERT / SELECT构造?

吉文斯:

  • DWU = 600
  • 表17列,行数为1.33B
  • 目标表为空 预先

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

1 个答案:

答案 0 :(得分:4)

INSERT ... SELECT不一定完全记录在SQLDW中。您有机会查看以下文章吗?

https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-develop-best-practices-transactions

相关问题