捕获 sys.dm_pdw_dms_workers
Capture of sys.dm_pdw_dms_workers
我想从 sys.dm_pdw_dms_workers 收集数据并将其保留一段时间。
我正在 运行在接近静止的 DWU6000 系统上执行以下操作 SQL,它 运行 超过 40 分钟。
这么长的 运行 时间有什么解释?我在一个很少使用的 DWU100 系统上执行了这个过程,查询 运行 秒。
INSERT INTO
#dm_pdw_dms_workers
(
request_id
,step_index
,dms_step_index
,pdw_node_id
,distribution_id
,type
,status
,bytes_per_sec
,bytes_processed
,rows_processed
,start_time
,end_time
,cpu_time
,query_time
,buffers_available
,sql_spid
,dms_cpid
,error_id
,source_info
,destination_info
)
select
request_id
,step_index
,dms_step_index
,pdw_node_id
,distribution_id
,type
,status
,bytes_per_sec
,bytes_processed
,rows_processed
,start_time
,end_time
,cpu_time
,query_time
,buffers_available
,sql_spid
,dms_cpid
,error_id
,source_info
,destination_info
from
sys.dm_pdw_dms_workers
where
end_time is not null
;
温度 table 定义为:
create table
#dm_pdw_dms_workers
(
request_id nvarchar(32) /* PK of sys.dm_pdw_dms_workers. */
,step_index integer /* PK of sys.dm_pdw_dms_workers. */
,dms_step_index integer /* PK of sys.dm_pdw_dms_workers. */
,pdw_node_id integer
,distribution_id integer
,type nvarchar(32)
,status nvarchar(32)
,bytes_per_sec bigint
,bytes_processed bigint
,rows_processed bigint
,start_time datetime
,end_time datetime
,cpu_time bigint
,query_time integer
,buffers_available integer
,sql_spid integer
,dms_cpid integer
,error_id nvarchar(36)
,source_info nvarchar(4000)
,destination_info nvarchar(4000)
)
WITH
(
HEAP
,DISTRIBUTION = hash(request_id)
)
;
源数据不大:
select
count(step_index)
from
sys.dm_pdw_dms_workers
where
end_time is not null
;
结果
485,694
删除 temp table 的 DISTRIBUTION 子句可防止在高 DWU 时生成非最佳计划
我想从 sys.dm_pdw_dms_workers 收集数据并将其保留一段时间。
我正在 运行在接近静止的 DWU6000 系统上执行以下操作 SQL,它 运行 超过 40 分钟。
这么长的 运行 时间有什么解释?我在一个很少使用的 DWU100 系统上执行了这个过程,查询 运行 秒。
INSERT INTO
#dm_pdw_dms_workers
(
request_id
,step_index
,dms_step_index
,pdw_node_id
,distribution_id
,type
,status
,bytes_per_sec
,bytes_processed
,rows_processed
,start_time
,end_time
,cpu_time
,query_time
,buffers_available
,sql_spid
,dms_cpid
,error_id
,source_info
,destination_info
)
select
request_id
,step_index
,dms_step_index
,pdw_node_id
,distribution_id
,type
,status
,bytes_per_sec
,bytes_processed
,rows_processed
,start_time
,end_time
,cpu_time
,query_time
,buffers_available
,sql_spid
,dms_cpid
,error_id
,source_info
,destination_info
from
sys.dm_pdw_dms_workers
where
end_time is not null
;
温度 table 定义为:
create table
#dm_pdw_dms_workers
(
request_id nvarchar(32) /* PK of sys.dm_pdw_dms_workers. */
,step_index integer /* PK of sys.dm_pdw_dms_workers. */
,dms_step_index integer /* PK of sys.dm_pdw_dms_workers. */
,pdw_node_id integer
,distribution_id integer
,type nvarchar(32)
,status nvarchar(32)
,bytes_per_sec bigint
,bytes_processed bigint
,rows_processed bigint
,start_time datetime
,end_time datetime
,cpu_time bigint
,query_time integer
,buffers_available integer
,sql_spid integer
,dms_cpid integer
,error_id nvarchar(36)
,source_info nvarchar(4000)
,destination_info nvarchar(4000)
)
WITH
(
HEAP
,DISTRIBUTION = hash(request_id)
)
;
源数据不大:
select
count(step_index)
from
sys.dm_pdw_dms_workers
where
end_time is not null
;
结果
485,694
删除 temp table 的 DISTRIBUTION 子句可防止在高 DWU 时生成非最佳计划