query-optimization - 性能最差/长时间运行的查询 (Teradata)
问题描述
首先,让我首先说这个问题可能已经存在很长时间了。但是,由于我是 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 指标计算逻辑有点困惑。除了上面提到的,我发现了另一种逻辑
ImpactCPU = (max_vproc_CPU * number of vprocs)
。请指出正确的一项。 - 请让我知道要使用的历史表(在 pdcrinfo 等中)
- 最后,我应该应用什么逻辑将所有这些指标合二为一来确定前 10 名?
我们正在使用 Teradata v14。
非常感谢任何帮助。如果需要其他信息,请告诉我。
干杯!
解决方案
推荐阅读
- python - 如果我没有所有值,如何提交 INSERT INTO
- node.js - 浏览器自动重新加载涉及的 VueJS 模块
- django - 我重新启动了 docker,但现在 nginx 无法连接。我能做些什么?
- powershell - 批量删除脚本的 PowerShell 问题
- excel - 将匹配替换为查找并将所有找到的值粘贴到新行中
- azure - 如何将一组迭代的规则添加到 ARM 模板中的单个规则以用于 ManagementPolicy
- amazon-ec2 - 通过网络连接到 Fauxton
- discord.js - 如何获取公会的语音通道数?
- jdbc - 将数据从 KNIME 上传到 Bigquery / GCS
- hive - 使用 Presto + Hive 删除分区的最佳方法