Прежде всего, позвольте мне начать с того, что этот вопрос, вероятно, был давно.Тем не менее, поскольку я новичок в 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/(10241024) 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.
Любая помощь высоко ценится.Пожалуйста, дайте мне знать, если необходима дополнительная информация. *1024*
Ура!