|
Archives of the TeradataForumMessage Posted: Thu, 27 Sep 2001 @ 15:30:34 GMT
<-- Anonymously Posted: Wednesday, September 19, 2001 11:23 -> Hi all , How about this method of getting Active users based on incremental CPU/IO usage? It will also give incremental CPU usage and DISK IO usage. Don't know if this would miss anything....except for idle sessions to the Teradata. Let me know what you think. ------------------------- 1) Create 3 tables as follows CREATE SET TABLE NOW_AMPUSE ,FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL ( ACCOUNTNAME CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, USERNAME CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, CPUTIME FLOAT FORMAT '---,---,---,--9.99' NOT NULL, DISKIO FLOAT FORMAT '--,---,---,--9' NOT NULL) UNIQUE PRIMARY INDEX ( ACCOUNTNAME ,USERNAME ); CREATE SET TABLE PAST_AMPUSE ,FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL ( ACCOUNTNAME CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, USERNAME CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL, CPUTIME FLOAT FORMAT '---,---,---,--9.99' NOT NULL, DISKIO FLOAT FORMAT '--,---,---,--9' NOT NULL) UNIQUE PRIMARY INDEX ( ACCOUNTNAME ,USERNAME ); CREATE SET TABLE AMPUSE ,FALLBACK , NO BEFORE JOURNAL, NO AFTER JOURNAL ( DDATE DATE FORMAT 'YYYY/MM/DD', TTIME INTEGER FORMAT '999999' NOT NULL, ACCOUNTNAME CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, USERNAME CHAR(30) CHARACTER SET LATIN NOT CASESPECIFIC, CPUTIME FLOAT, DISKIO FLOAT, TAG CHAR(2) CHARACTER SET LATIN NOT CASESPECIFIC) UNIQUE PRIMARY INDEX ( DDATE ,TTIME ,ACCOUNTNAME ,USERNAME ); 2) Create a macro as follows Replace macro GETAMP As( locking table dbc.acctg for access ------------------------------------------------ -- This table has current amp usage information ------------------------------------------------ delete from NOW_AMPUSE; insert into NOW_AMPUSE ( ACCOUNTNAME , USERNAME, CPUTIME, DISKIO ) Select ACCOUNTNAME(char(16)), USERNAME, SUM(CPU), SUM(IO) from DBC.ACCTG group by 1,2 ; --------------------------------------------------------------------------- -- This table compares current information to previous amp usage information --------------------------------------------------------------------------- Insert into AMPUSE ( DDATE,TTIME,ACCOUNTNAME, USERNAME, CPUTIME, DISKIO ) select DATE, TIME, NOW.ACCOUNTNAME, NOW.USERNAME, NOW.CPUTIME - zeroifnull (BFR.CPUTIME) , NOW.DISKIO - zeroifnull (BFR.DISKIO) from NOW_AMPUSE NOW Left outer join PAST_AMPUSE BFR On NOW.ACCOUNTNAME = BFR.ACCOUNTNAME and NOW.USERNAME = BFR.USERNAME and NOW.CPUTIME NOT = BFR.CPUTIME and NOW.DISKIO NOT = BFR.DISKIO ; --------------------------------- --- Copy from Now to past --------------------------------- delete from PAST_AMPUSE ALL; insert into PAST_AMPUSE select * from NOW_AMPUSE; ); 3) Run the macro every x minutes Exec GetInfo () ; 4) --------------------------------------------------------------------------- -- Following SQL will give you active users with incremental cpu and diskio -- in the last x minutes --------------------------------------------------------------------------- Sel username, sum(cputime) (named cputime) (format'---,---,--9'), sum(diskio) (named diskio) (format'---,---,--9') from ampuse where ttime = (sel max(ttime) from ampuse where ddate = date ) and ddate = date group by 1 having cputime > 0 or diskio > 0 order by 2 desc ;
| ||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||
Copyright 2016 - All Rights Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||
Last Modified: 15 Jun 2023 | ||||||||||||||||||||||||||||||||||||||||||||||||