【问题标题】:SQL DW Internal table data load taking long timeSQL DW 内部表数据加载耗时较长
【发布时间】:2016-10-30 16:19:46
【问题描述】:

我在 SQL DW 内部表之间加载数据时遇到问题,我试图只加载 50 条记录,这在我的源代码中 - 但是“插入”语句需要很长时间并且没有成功执行 [它一直在运行超过 60 分钟]

关于这方面的统计数据很少 • 源表(例如 S1)有 50 条记录,105 列,列式存储,DWU 100 上的循环分布 [此表的 DDL 如下所示] • 已创建目标表(例如 T1),具有相同的 105 列、列式存储、DWU 100 上的循环分发 • 从 S1 作品中选择前 5 * • 从 S1 作品中选择 * • 插入 T1,因为 select * from S1 运行了很长时间而没有响应 [超过 60 分钟] • 插入 T1 作为 select top 5 * from S1 ,工作一次,之后不工作 • 插入 T1 作为 select top 5 all_columns_listed from S1 ,始终有效并在

我无法理解,后台可能会发生什么 - 当 select * from S1 正在运行时插入 T1;

DMS 有问题吗?还是因为我们有 105 列?

通过扩大到 DWU 200 尝试了所有上述操作 - 但仍然没有运气。

以上所有操作都在完全不同的数据库上尝试过,仍然没有成功。

还有什么可以检查正在发生的事情吗?如何处理?

我还尝试运行下面的语句来查看 - 是否有任何其他查询正在积极运行 - 这可能会使我的插入语句暂停或等待.. 但我可以看到 - 只有我的查询正在数据库上积极运行.. select * from "sys"."dm_pdw_exec_requests" where status='Running' order by submit_time desc

S1 DDL 如下 创建表 S1 (
col1 [唯一标识符] NOT NULL,
col2 nvarchar NULL,
col3 [唯一标识符] NULL,
col4 nvarchar NULL,
col5 nvarchar NULL,
col6 [十进制](26, 6) NULL,
col7 [十进制](26, 6) NULL,
col8 [十进制](26, 6) NULL,
col9 [十进制](26, 6) NULL,
col10 [十进制](27, 6) NULL,
col11 [十进制](27, 6) NULL,
col12 [十进制](26, 6) NULL,
col13 [十进制](25, 6) NULL,
col14 [十进制](25, 6) NULL,
col15 datetimeoffset NULL,
col16 nvarchar NULL,
col17 datetimeoffset NULL,
col18 [smallint] NULL,
col19 [十进制](25, 6) NULL,
col20 [十进制](25, 6) NULL,
col21 [十进制](26, 6) NULL,
col22 [十进制](26, 6) NULL,
col23 datetimeoffset NULL,
col24 [十进制](25, 6) NULL,
col25 [十进制](25, 6) NULL,
col26 [int] NULL,
col27 [十进制](25, 6) NULL,
col28 datetimeoffset NULL,
col29 [十进制](25, 6) NULL,
col30 [十进制](25, 6) NULL,
col31 datetimeoffset NULL,
col32 datetimeoffset NULL,
col33 datetimeoffset NULL,
col34 datetimeoffset NULL,
col35 datetimeoffset NULL,
col36 datetimeoffset NULL,
col37 [十进制](25, 6) NULL,
col38 [十进制](25, 6) NULL,
col39 datetimeoffset NULL,
col40 [int] NULL,
col41 nvarchar NULL,
col42 [smallint] NULL,
col43 [smallint] NULL,
col44 [十进制](25, 6) NULL,
col45 [十进制](25, 6) NULL,
col46 [十进制](25, 6) NULL,
col47 [十进制](25, 6) NULL,
col48 [十进制](25, 6) NULL,
col49 datetimeoffset NULL,
col50 [十进制](25, 6) NULL,
col51 [十进制](25, 6) NULL,
col52 [十进制](25, 6) NULL,
col53 [十进制](25, 6) NULL,
col54 [十进制](25, 6) NULL,
col55 [十进制](25, 6) NULL,
col56 datetimeoffset NULL,
col57 [十进制](25, 6) NULL,
col58 [十进制](25, 6) NULL,
col59 [十进制](25, 6) NULL,
col60 [十进制](25, 6) NULL,
col61 [十进制](25, 6) NULL,
col62 [十进制](25, 6) NULL,
col63 datetimeoffset NULL,
col64 [十进制](25, 6) NULL,
col65 [十进制](25, 6) NULL,
col66 [十进制](25, 6) NULL,
col67 [十进制](25, 6) NULL,
col68 [十进制](25, 6) NULL,
col69 [十进制](25, 6) NULL,
col70 datetimeoffset NULL,
col71 [十进制](25, 6) NULL,
col72 nvarchar NULL,
col73 nvarchar NULL,
col74 datetimeoffset NULL,
col75 datetimeoffset NULL,
col76 datetimeoffset NULL,
col77 datetimeoffset NULL,
col78 datetimeoffset NULL,
col79 nvarchar NULL,
col80 nvarchar NULL,
col81 nvarchar NULL,
col82 nvarchar NULL,
col83 nvarchar NULL,
col84 nvarchar NULL,
col85 nvarchar NULL,
col86 nvarchar NULL,
col87 nvarchar NULL,
col88 nvarchar NULL,
col89 [位] NULL,
col90 nvarchar NULL,
col91 nvarchar NULL,
col92 datetimeoffset NULL,
col93 [十进制](25, 6) NULL,
col94 nvarchar NULL,
col95 nvarchar NULL,
col96 [十进制](25, 6) NULL,
col97 [十进制](25, 6) NULL,
col98 [十进制](25, 6) NULL,
col99 [十进制](25, 6) NULL,
col100 [十进制](25, 6) NULL,
col101 datetimeoffset NULL,
col102 nvarchar NULL,
col103 nvarchar NULL,
col104 nvarchar NULL,
col105 nvarchar NULL,
col106 nvarchar NULL,
col107 datetimeoffset NULL,
col108 datetimeoffset NULL,
col109 varchar NULL
)

(
分配 = ROUND_ROBIN, 堆
)

【问题讨论】:

    标签: azure azure-sqldw


    【解决方案1】:

    如果您将数据加载到一个空表中,您应该考虑使用CREATE TABLE AS SELECT (CTAS) 而不是INSERT INTO ... 以允许 DW 完全并行化跨节点的操作。

    https://azure.microsoft.com/en-us/documentation/articles/sql-data-warehouse-develop-ctas/ 解释 CTAS,https://saldeloera.wordpress.com/2012/10/15/pdw-performance-tip-ctas-vs-insert-select/ 有更全面的比较。

    【讨论】:

    • 不。它不是一个空表。目标表(T1)将是我们的主表,我们将从源表(S1)中做增量数据。出于测试目的 - 我尝试使用 CTAS 作为 create table T2 WITH (HEAP, DISTRIBUTION = ROUND_ROBIN) 作为 select * FROM S1 并且语句运行超过 15 分钟 [再次,S1 只有 50 条记录] 并且还注意到这是在 200 DWU 数据库服务器上运行的唯一活动查询。
    • 嘿阿拉文德。你知道你使用的是什么资源类吗?如果您使用的是默认管理员帐户,那么您使用的是最小的资源类。如果这些列足够大,您可能会受到内存限制。如果您使用的是小型资源类,请尝试创建更大的资源类用户并重试。 azure.microsoft.com/en-us/documentation/articles/…
    • 嗨,我尝试了 100DWU - smallrc、largerc 和 xlargerc - 没有运气也尝试了 200DWU - smallrc、largerc、xlargerc - 没有运气 S1(源有)50 条记录,105 列
    • 表统计信息 two_part_name [S1] table_row_count 50 table_reserved_space_GB 0.004752 table_data_space_GB 0.001152 table_index_space_GB 0 table_unused_space_GB 0.0036
    • 你在这台服务器上有什么权限?可能是一些非常密集的东西正在运行,但由于您的权限而您看不到它?考虑通过门户“新支持请求”选项提出支持请求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 2021-03-17
    相关资源
    最近更新 更多