我是teradata的新手。我有一个存储过程,在服务器上花了很多时间。我只是想知道它使用了多少个AMP。我有进程的会话ID,只有该会话将在该会话中运行。因此,在会话ID可用的情况下,我可以查询DBC表上的内容并知道该会话使用了多少AMP。
提前致谢
答案 0 :(得分:1)
存储过程在单个解析引擎上运行,只有实际的SQL语句才能在AMP上运行,无论是在一个,部分还是所有AMP上。
但是每当有人抱怨Teradata上的SP很慢时,通常是因为有一些循环或光标来处理数据。游标是顺序的(FETCH NEXT),这是像Teradata这样的并行数据库系统的最坏情况。使用SQL重写它会更快地运行几个。
答案 1 :(得分:0)
在Teradata 14及更新版本(可能是13.10)中,您可以通过SQL访问System PMPC API,以便监视活动的DBC / SQL会话。如果您可以访问Viewpoint,也可以使用它。
SELECT UserName
, AmpCount
, ReqCPU
, ReqIO
, ReqSpool
, (1 - AvgAMPCPUSec) / HotAmp1CPU AS CPUSkew
FROM TABLE(MonitorSession({HostIDIn},'{UserNameIn}', {SessionIDIn})) ;
HostIDIn : - 1包含所有主机
UserNameIn :' *'包括所有用户
SessionNoIn :0(零)包括所有会话