17.11.2014 Aufrufe

Performanceoptimierung der Datenanalyse in Netzwerkgraphen durch

Performanceoptimierung der Datenanalyse in Netzwerkgraphen durch

Performanceoptimierung der Datenanalyse in Netzwerkgraphen durch

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

3. Vorbetrachtungen e<strong>in</strong>er hochperformanten Lösung<br />

Die Dauer e<strong>in</strong>er SQL-Anweisung, die mit e<strong>in</strong>er graphischen Oberfläche an<br />

den SQL-Server gesendet wird, wird meist zusätzlich zum Ergebnis angezeigt.<br />

Im Rahmen dieser Arbeit wurde pgAdm<strong>in</strong> [27] verwendet, welches nach je<strong>der</strong><br />

Abfrage die benötigte Zeit <strong>in</strong> Millisekunden anzeigt. Wenn ke<strong>in</strong>e graphische<br />

Oberfläche vorhanden ist und die SQL-Abfragen direkt an <strong>der</strong> Shell an den<br />

SQL-Server gesendet werden, kann die Zeit <strong>durch</strong> den L<strong>in</strong>ux/Unix Befehl time<br />

gemessen werden. E<strong>in</strong> solcher Aufruf könnte beispielsweise wie folgt aussehen:<br />

time echo ’SELECT count(*) FROM l<strong>in</strong>ks;’ | psql<br />

Diese Zeitmessung umfasst nicht nur die Ausführung <strong>der</strong> SQL-Anweisung selbst,<br />

son<strong>der</strong>n auch das Senden <strong>der</strong> Anweisung an den Server (unter Umständen über<br />

e<strong>in</strong>e Netzwerkverb<strong>in</strong>dung) und die Ausgabe des Ergebnisses. Die Ausgabe des<br />

Ergebnisses auf <strong>der</strong> Konsole ist sehr langsam und verfälscht die Messung stark.<br />

Wenn also sehr viele Zeilen zurückgegeben werden, ist das gemessene Ergebnis<br />

unbrauchbar. Das e<strong>in</strong>fache Zählen <strong>der</strong> Zeilen im Ergebnis vermeidet dieses<br />

Problem. So dauert die Ausführung des Befehls:<br />

time echo ’SELECT * FROM l<strong>in</strong>ks;’ | psql<br />

deutlich länger als <strong>der</strong> vorher genannte.<br />

Jedoch verbraucht auch das Zählen <strong>der</strong> Zeilen e<strong>in</strong> wenig Zeit. Dies kann<br />

vermieden werden, <strong>in</strong>dem das Ergebnis <strong>der</strong> Abfrage <strong>in</strong> e<strong>in</strong>e Datei umgeleitet<br />

wird. Dies kann bei großen Dateien zu Problemen führen und hängt von <strong>der</strong><br />

Geschw<strong>in</strong>digkeit <strong>der</strong> Festplatte ab. Außerdem verwalten verschiedene Dateisystem<br />

große Dateien auf verschiedene Weisen. Auch <strong>der</strong> Füllstand <strong>der</strong> Partition<br />

und die Fragmentierung <strong>der</strong> neuen Datei wirkt sich auf die Zeitmessung aus.<br />

Somit bietet die Umleitung <strong>in</strong> e<strong>in</strong>e Datei, die nicht <strong>in</strong> e<strong>in</strong>em Dateisystem auf<br />

e<strong>in</strong>em physikalischen Speicher abgelegt ist, die genaueste Messung. E<strong>in</strong> Beispiel<br />

dafür sieht so aus:<br />

time echo ’SELECT * FROM l<strong>in</strong>ks;’ | psql > /dev/null<br />

Bei <strong>der</strong> Verwendung e<strong>in</strong>er graphischen Oberfläche ist die Ausgabe von sehr vielen<br />

(> 1000000) Zeilen nicht mehr möglich. Denn dabei wird pro Ergebniszeile,<br />

e<strong>in</strong>e Zeile <strong>in</strong> e<strong>in</strong>em Listenfeld <strong>der</strong> verwendeten GUI angelegt. Derartig große<br />

Listenfel<strong>der</strong> s<strong>in</strong>d nicht vorgesehen. Der Versuch e<strong>in</strong>e solche Ausgabe anzuzeigen<br />

bricht nach mehreren Stunden Ausführungszeit ab (da <strong>der</strong> Arbeitsspeicher<br />

voll ist) o<strong>der</strong> dauert aufgrund <strong>der</strong> Auslagerung von Arbeitsspeicher so lange,<br />

dass die Ausführung nicht effizient möglich ist. Wenn die graphische Benut-<br />

© Andreas Redmer — 29. September 2011 37

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!