Leistungsoptimierung für die ADOBE FLASH-PLATTFORM
Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM
Leistungsoptimierung für die ADOBE® FLASH®-PLATTFORM
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