我有兴趣从与Teradata DB的JDBC连接中获取特定于查询的元数据数据。
在查询之后,我可以查询ResultSetMetadata
的光标,它会向我提供有关ResultSet
本身(列名和类型,列属性等)的信息,但不会告诉我关于查询的内容。
我能想到的最接近的事情是执行第二个查询,在主要问题前加EXPLAIN
,然后解析此解释的结果以获得估计(不是真实的)数据)用于假脱机使用和时间成本。
有没有办法指定我想要查询资源的使用情况?
答案 0 :(得分:1)
对于对此感兴趣的任何人,答案是否定的,这不能通过相同的连接来完成。
我最终采取的方法可能是enable query logging
begin query logging with objects, sql, usecount, utilityinfo LIMIT SQLTEXT=0 on all;
begin query logging with objects, sql limit threshold = 5 elapsedsec and sqltext=0 on VIEWPOINT;
然后使用this forum post中概述的内容查询DBC.DBQLogTbl
和DBC.DBQLSQLTbl
,如果可能,请进行流式处理,或者只是定期批量查询以获得真实的信息时间肥胖型'指标。
select top 50
ProcID
, QueryID
, AMPCPUTime
, MaxAMPCPUTime * (hashamp () + 1) CPUImpact
, CAST (100 - ((AmpCPUTime / (hashamp () + 1)) * 100 / NULLIFZERO (MaxAMPCPUTime)) AS INTEGER) "CPUSkew%"
, TotalIOCount
, MaxAMPIO * (hashamp () + 1) IOImpact
, CAST (100 - ((TotalIOCount / (hashamp () + 1)) * 100 / NULLIFZERO (MaxAMPIO) ) AS INTEGER) "IOSkew%"
, AMPCPUTime * 1000 / nullifzero (TotalIOCount) LHR
, TotalIOCount / nullifzero (AMPCPUTime * 1000) RHL
, ParserCPUTime
, Queryband
, Substr(QueryText,1,2000) QueryText
from
/* For archived DBQL
dbql_arch.dbqlogtbl_hst where logdate=1131201
and ampcputime>0
*/
/* For online DBQL*/
dbc.dbqlogtbl where
cast(cast(starttime as char(10)) as date) = '2013-12-18' (date)
and ampcputime>0
order by CPUImpact desc;