我是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