首先,让我首先说这个问题已经存在了很长时间。但是,由于我是Teradata的新手,我要求你帮助实现我的目标。
话虽如此,我正在尝试构建一个查询,该查询将显示给定时间帧(通常是过去)中排名前10位的最差/长时间运行的查询。 我已经在网上做了一些阅读,并提出了一些可能有助于识别此类查询的指标: -
SELECT
UserName,
LogDate,
QueryID,
StartTime,
FirstRespTime,
((FirstRespTime - StartTime) HOUR(4) TO SECOND(2)) AS ElapsedTime,
((FirstRespTime - FirstStepTime) HOUR(4) TO SECOND(2)) AS EexecutionTime,
(FirstRespTime - StartTime) HOUR to SECOND(4) AS FirstRespElapsedTime,
ParserCPUTime,
AMPCPUTime,
AMPCPUTime + ParserCPUTime AS TotalCPUTime,
SpoolUsage/(1024*1024*1024) AS Spool_GB,
(MaxAMPCPUTime) * (HASHAMP() + 1) AS ImpactCPU
CAST(100-(nullifzero(AMPCPUTime/HASHAMP() + 1) * 100 /nullifzero(MaxAMPCPUTime)) AS INTEGER ) AS "CPUSkew%",
TotalIOCount,
MaxAMPIO * (HASHAMP() + 1) AS ImpactIO,
CAST(100-((TotalIOCount/HASHAMP() + 1) * 100 /nullifzero(MaxAMPIO)) AS INTEGER ) AS "IOSkew%",
QueryText
FROM pdcrinfo.<tables>
.....
.....
WHERE
logdate BETWEEN <input start-date> AND <input end-date>
AND
AMPCPUTime > 0
但是,我仍在努力解决以下问题 -
ImpactCPU = (max_vproc_CPU * number of vprocs)
。
请说明正确的。我们正在使用Teradata v14。
非常感谢任何帮助。如果有必要提供更多信息,请与我们联系。
干杯!