Teradata中会话消耗的AMP数量

时间:2015-04-05 12:24:54

标签: session teradata access-module-processor

我是teradata的新手。我有一个存储过程,在服务器上花了很多时间。我只是想知道它使用了多少个AMP。我有进程的会话ID,只有该会话将在该会话中运行。因此,在会话ID可用的情况下,我可以查询DBC表上的内容并知道该会话使用了多少AMP。

提前致谢

2 个答案:

答案 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(零)包括所有会话