我是teradata的新用户。我有一个在服务器上花费大量时间的存储过程。我只想知道它使用了多少个AMP。我有进程的会话ID,只有该过程将在该会话中运行。因此,在会话ID可用的情况下,我可以在DBC表上查询某些内容并知道该会话使用了多少个AMP。Teradata会话消耗的AMP数量
在此先感谢
我是teradata的新用户。我有一个在服务器上花费大量时间的存储过程。我只想知道它使用了多少个AMP。我有进程的会话ID,只有该过程将在该会话中运行。因此,在会话ID可用的情况下,我可以在DBC表上查询某些内容并知道该会话使用了多少个AMP。Teradata会话消耗的AMP数量
在此先感谢
在Teradata的14和更高版本(可能是13.10),您必须通过SQL,使您可以监视活动的DBC/SQL会话访问系统PMPC的API。如果你有权访问Viewpoint,你也可以使用它。
SELECT UserName
, AmpCount
, ReqCPU
, ReqIO
, ReqSpool
, (1 - AvgAMPCPUSec)/HotAmp1CPU AS CPUSkew
FROM TABLE(MonitorSession({HostIDIn},'{UserNameIn}', {SessionIDIn})) ;
HostIDIn:-1包括所有主机
UserNameIn: '*' 包括所有用户
SessionNoIn:0(零)包括所有会话
桌子是指哪个桌子?或者它只是表? – 2015-04-05 16:17:58
MonitorSession()返回一个表对象,因此返回FROM子句中的TABLE。 – 2015-04-05 16:19:58
monitorsession(-1,username,sessionid)是这样吗? – 2015-04-05 16:23:19
AS tored过程在单个分析引擎上运行,只有实际的SQL语句将在AMP上运行,无论是在一个,部分还是所有AMP上。
但是,每当有人抱怨Teradata上的SP太慢,通常是因为有一些循环或光标用于处理数据。游标是连续的(FETCH NEXT),这对于像Teradata这样的并行数据库系统是最糟糕的情况。使用SQL重写它会快几个数量级。
是同意的。但是我想知道,放大器的数量是否通过sp中的查询改变了查询,并且过程的整个计数是多少 – 2015-04-05 16:22:01
AMP的数量总是根据SQL而变化(不管它是从SP内提交的还是独立的) ,如果它是PI访问,那么它是单个AMP,USI - > 2 AMP,NUSI/FTS - >所有AMP。查看实际计划的唯一方法是解释SP中提交的单个SQL语句。 – dnoeth 2015-04-05 17:43:55
什么版本的Teradata? – 2015-04-05 14:14:29
你可以显示SP来源吗? – dnoeth 2015-04-05 14:49:18