table append

Leistungstestszenario für die Aggregation von großen Protokolldaten

Scénario de test & Cas d'usage

Geschäftskontext

Ein IT-Betriebsteam muss stündlich generierte Server-Protokolldateien in einer zentralen, täglichen Protokolltabelle zusammenfassen. Da das Datenvolumen sehr groß ist, ist die Effizienz der Anhängeoperation entscheidend. Dieses Szenario testet die Leistungsfähigkeit der Aktion mit der Option 'singlePass'.
Über das Set : table

Laden, Speichern und Verwalten von Tabellen im Arbeitsspeicher.

Entdecken Sie alle Aktionen von table
Datenaufbereitung

Erstellt eine große Quelltabelle 'Stundenprotokoll' mit 1 Million Einträgen, um eine hohe Datenmenge zu simulieren, und eine leere In-Memory-Zieltabelle 'Tagesprotokoll_Zentral'.

Kopiert!
1DATA casuser.Stundenprotokoll;
2 DO i = 1 to 1000000;
3 timestamp = datetime();
4 serverID = 'WEB_SRV_0'||mod(i, 4);
5 statusCode = 200;
6 IF mod(i, 100) = 0 THEN statusCode = 503;
7 OUTPUT;
8 END;
9RUN;
10 
11DATA casuser.Tagesprotokoll_Zentral;
12 stop;
13 LENGTH timestamp 8 serverID $ 12 statusCode 8;
14RUN;

Étapes de réalisation

1
Laden der leeren Zieltabelle 'Tagesprotokoll_Zentral' in den Speicher.
Kopiert!
1PROC CAS;
2 TABLE.loadTable /
3 caslib='casuser'
4 path='Tagesprotokoll_Zentral.sashdat'
5 casOut={name='tagesprotokoll_in_memory', replace=true};
6RUN;
2
Anhängen der großen Protokolldatei an die zentrale Tabelle unter Verwendung von 'singlePass=TRUE' für maximale Effizienz.
Kopiert!
1PROC CAS;
2 TABLE.append /
3 SOURCE={name='Stundenprotokoll', caslib='casuser', singlePass=TRUE}
4 target='tagesprotokoll_in_memory';
5RUN;
3
Validierung der Operation durch Zählen der Zeilen in der Zieltabelle.
Kopiert!
1 
2PROC CAS;
3TABLE.numRows / TABLE='tagesprotokoll_in_memory';
4RUN;
5 

Erwartetes Ergebnis


Die Aktion wird effizient ausgeführt, ohne eine transiente Kopie der Daten auf dem Server zu erstellen. Die Zieltabelle 'tagesprotokoll_in_memory' enthält nun genau 1.000.000 Zeilen aus der Quelltabelle 'Stundenprotokoll'. Die Leistung ist im Vergleich zu einer Ausführung mit 'singlePass=FALSE' (Standard) spürbar besser.