计算 Teradata 查询执行时间
Calculate Teradata Query Execution Time
我正在尝试计算特定 Teradata 用户的 Teradata 查询执行时间。我目前从那里得到以下启发的查询:
Calculating-the-actual-query-run-time
查询:
SELECT date
,a.username
,a.errorcode
,SUBSTR(b.sqltextinfo, 1, 15000)
,a.starttime
,a.firstresptime
,a.firststeptime
,((a.firstresptime - a.starttime) HOUR(4) TO SECOND(2)) AS elapsedtime
,((a.firstresptime - a.firststeptime) HOUR(4) TO SECOND(2)) AS executiontime
,elapsedtime - executiontime AS delaytime
FROM dbc.QryLogV a
INNER JOIN dbc.QryLogSqlV b ON a.procid = b.procid AND a.queryid = b.queryid
WHERE a.Username = 'xxx';
遗憾的是它触发了错误:
Executed as Single statement. Failed [7453 : HY000] Interval field overflow.
几年前,DBQL 中时间戳的数据类型从 TIMESTAMP(2)
更改为 TIMESTAMP(6)
,现在当您尝试在结果中获取 SECOND(2)
时,它会溢出。要解决此问题,请使用 SECOND(6)
或 ``SECOND`。
顺便说一句,根据您的版本,您会发现 ElapsedTime
和 DelayTime
已预先计算在 dbc.QryLogV 中。
我正在尝试计算特定 Teradata 用户的 Teradata 查询执行时间。我目前从那里得到以下启发的查询: Calculating-the-actual-query-run-time
查询:
SELECT date
,a.username
,a.errorcode
,SUBSTR(b.sqltextinfo, 1, 15000)
,a.starttime
,a.firstresptime
,a.firststeptime
,((a.firstresptime - a.starttime) HOUR(4) TO SECOND(2)) AS elapsedtime
,((a.firstresptime - a.firststeptime) HOUR(4) TO SECOND(2)) AS executiontime
,elapsedtime - executiontime AS delaytime
FROM dbc.QryLogV a
INNER JOIN dbc.QryLogSqlV b ON a.procid = b.procid AND a.queryid = b.queryid
WHERE a.Username = 'xxx';
遗憾的是它触发了错误:
Executed as Single statement. Failed [7453 : HY000] Interval field overflow.
几年前,DBQL 中时间戳的数据类型从 TIMESTAMP(2)
更改为 TIMESTAMP(6)
,现在当您尝试在结果中获取 SECOND(2)
时,它会溢出。要解决此问题,请使用 SECOND(6)
或 ``SECOND`。
顺便说一句,根据您的版本,您会发现 ElapsedTime
和 DelayTime
已预先计算在 dbc.QryLogV 中。