30.07.2012 Aufrufe

Leistungsoptimierung für die ADOBE FLASH-PLATTFORM

Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM

Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM

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.

Kapitel 8: SQL-Datenbankleistung<br />

Anwendungsdesign <strong>für</strong> <strong>die</strong> Datenbankleistung<br />

Ändern Sie <strong>die</strong> text-Eigenschaft eines SQLStatement-Objekts nicht, nachdem Sie es ausgeführt haben. Verwenden<br />

Sie stattdessen eine SQLStatement-Instanz <strong>für</strong> jede SQL-Anweisung und Anweisungsparameter, um verschiedene<br />

Werte bereitzustellen.<br />

Bevor eine SQL-Anweisung ausgeführt wird, wird sie von der Laufzeitumgebung vorbereitet (kompiliert), um<br />

festzustellen, welche Schritte intern ausführt werden müssen, um <strong>die</strong> Anweisung auszuführen. Wenn Sie<br />

SQLStatement.execute() <strong>für</strong> eine SQLStatement-Instanz aufrufen, <strong>die</strong> zuvor noch nicht ausgeführt wurde, wird <strong>die</strong><br />

Anweisung automatisch vorbereitet, bevor sie ausgeführt wird. Bei nachfolgenden Aufrufen der execute()-Methode<br />

ist <strong>die</strong> Anweisung dann bereits vorbereitet, sofern <strong>die</strong> SQLStatement.text-Eigenschaft nicht geändert wurde.<br />

Deshalb wird sie schneller ausgeführt.<br />

Den größten Vorteil erzielen Sie, wenn Sie <strong>die</strong> Anweisung mit Anweisungsparametern anpassen. So können<br />

Anweisungen wiederverwendet werden, selbst wenn sich Werte in der Anweisung ändern. (Anweisungsparameter<br />

werden mit der assoziativen Array-Eigenschaft SQLStatement.parameters angegeben.) Anders als beim Ändern der<br />

text-Eigenschaft der SQLStatement-Instanz muss <strong>die</strong> Laufzeitumgebung <strong>die</strong> Anweisung nicht erneut vorbereiten,<br />

wenn Sie <strong>die</strong> Werte der Anweisungsparameter ändern.<br />

Wenn Sie eine SQLStatement-Instanz wiederverwenden, muss Ihre Anwendung einen Verweis auf <strong>die</strong> SQLStatement-<br />

Instanz speichern, nachdem sie vorbereitet wurde. Deklarieren Sie dazu <strong>die</strong> Variable als Variable mit Klassenumfang<br />

anstatt mit Funktionsumfang. Eine gute Vorgehensweise, <strong>die</strong> SQLStatement in eine Variable mit Klassenumfang zu<br />

ändern, besteht darin, <strong>die</strong> Anwendung so zu strukturieren, dass eine SQL-Anweisung in eine einzelne Klasse gesetzt<br />

wird. Auch eine Gruppe von Anweisungen, <strong>die</strong> im Zusammenhang ausgeführt werden, lassen sich von einer einzelnen<br />

Klasse umhüllen. (Diese Technik wird als „Command Design Pattern“ bezeichnet.) Indem Sie <strong>die</strong> Instanzen als<br />

Mitgliedsvariablen der Klasse definieren, bleiben sie erhalten, solange <strong>die</strong> Instanz der „umhüllenden“ Klasse in der<br />

Anwendung vorhanden ist. Sie können im Mindestfall einfach eine Variable definieren, <strong>die</strong> <strong>die</strong> SQLStatement-Instanz<br />

außerhalb einer Funktion enthält, sodass <strong>die</strong> Instanz im Speicher verbleibt. Deklarieren Sie <strong>die</strong> SQLStatement-Instanz<br />

zum Beispiel als Mitgliedsvariable in einer ActionScript-Klasse oder als Nicht-Funktions-Variable in einer JavaScript-<br />

Datei. Sie können dann <strong>die</strong> Werte der Anweisungsparameter festlegen und <strong>die</strong> execute()-Methode aufrufen, wenn<br />

<strong>die</strong> Abfrage dann ausgeführt werden soll.<br />

Verwenden Sie Datenbankindizes, um <strong>die</strong> Ausführungsgeschwindigkeit beim Vergleichen und Sortieren von Daten<br />

zu erhöhen.<br />

Wenn Sie einen Index <strong>für</strong> eine Spalte erstellen, speichert <strong>die</strong> Datenbank eine Kopie der Daten in <strong>die</strong>ser Spalte. Die<br />

Kopie wird in numerisch oder alphabetisch sortierter Reihenfolge gehalten. Durch <strong>die</strong>se Sortierung kann <strong>die</strong><br />

Datenbank schnell Werte abgleichen (zum Beispiel bei Verwendung des Gleichheitsoperators) und <strong>die</strong> Ergebnisdaten<br />

mithilfe der ORDER BY-Klausel sortieren.<br />

Datenbankindizes werden fortlaufend auf dem neuesten Stand gehalten. Deshalb dauern Datenänderungen (INSERT<br />

oder UPDATE) <strong>für</strong> <strong>die</strong>se Tabelle etwas länger. Die Daten können möglicherweise jedoch erheblich schneller<br />

abgerufen werden. Wegen <strong>die</strong>ser Leistungseinschränkung sollten Sie nicht einfach jede Spalte jeder Tabelle mit einem<br />

Index versehen. Verwenden Sie stattdessen eine Strategie zur Definition Ihrer Indizes. Orientieren Sie sich an den<br />

folgenden Richtlinien, um Ihre Indexierungsstrategie zu planen:<br />

Indexieren Sie Spalten, <strong>die</strong> bei Tabellenzusammenführungen, in WHERE-Klauseln oder in ORDER BY-Klauseln<br />

verwendet werden.<br />

Letzte Aktualisierung 9.5.2012<br />

91

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!