Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

SQL: Datenbankabfragen beschleunigen

Ausgangssituation und Randbedingungen

Testen Sie unsere 2017 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Lorenz Hölscher stellt Ihnen die Ausgangssituation vor und erläutert die Randbedingungen, bei denen gemessen wurde. Grundlage für die Messungen ist eine Datenbank mit rund 275.000 Datensätzen.

Transkript

SQL-Tuning bedeutet Geschwindigkeit und Geschwindigkeit wird nur noch übertroffen von mehr Geschwindigkeit. Es geht hier also wirklich um access-acceleration, also Zugriffsbeschleunigung. Access nicht notwendigerweise mit der Datenbak access, sondern Betonung auf Zugriffsgeschwindigkeiten. Und das ist das, was Ihren Kunden haben wollen und was sie Ihnen auch gerne versprechen. Das Ziel sind also vor allem schneller Datenzugriffe und das Nebenziel, das möchte ich gerne nochmal erwähnen, heißt auch keine falschen Daten, so das Sie nicht vor lauter Zwischenspeicherung und nicht mehr Aktualisierung leider schnell falsche Daten ausliefern. Also ganz klar Korrektheit geht vor Geschwindigkeit! Und wenn wir die Perfomance steigern wollen, dann gibt es verschiedene Möglichkeiten das zu machen und die unterteilen sich so ein bisschen in meßbare und nachvollziebare Methoden. Dazu zählen bspw. ein Index zu setzen und auch zu nutzen. Dann gibt es zwar meßbare aber irgendwie so ein bisschen unerklärliche Phenomene bspw. das die Reihenfolge der Tabellennamen innerhalb des SQL Statemens ein Unterschied machen können. Schließlich gibt es manchmal funktionierende Tricks. Dazu gehören bspw. kürzere Pfade und Dateinamen bei verknüpften Datenbanken. Das ist ganz stark abhängig vom Betribessystem, von der Bezeichnung der Pfade und Dateinamen und ähnlichem. Und zum Schluß natürlich auch Tipps und Tricks aus dem Bereich der Märchen und Mythen, nämlich so was das die Reihenfolge der Kriterien irgendwas an der Geschwindigkeit ändern würde. Bei dieser Gelegenheit möchte ich mich herzlich bei meinem Kollegen Michael Zimmermann bedanken, der mit seinem Script zur Access-Konferenz AEK einige Ideen und Hinweise beigesteuert hat. Wenn wir die Ergebnisse beurteilen, müssen wir natürlich so ein bisschen gucken wie gemessen wird. Gemessen habe ich in diesem Fall mit knapp einer viertel Million Datensätzen ungefär 275.000 und ausgeführt unter Access 2013 unter Windows 8.1. Die Messwerte sind natürlich ganz erheblich abhängig von z. B. der Hardware, wie ist der Rechner ausgestattet, wieviel Speicher, Geschwindigkeit des CPU, wieviel CPU Kerne gibt's und ähnliches. Und genauso von der Software. Was ist da alles instaliert, welche Datenbank-Version gibt's, was läuft unter anderen Diensten und ähnlichem. Deswegen ganz klar, es ist wichtiger die Tendenz als eine exakte Zahl. Nach jeder Messung gibt es hier einen kleinen Überblick was passiert ist und was es bringt. Wenn es eine Verbesserung gibt, d. h. das ist nach der Änderung schneller, dann bedeutet das, dass der Prozentwert kleiner als 100% ist. Kleiner als 100% heißt, die Dauer hast sich verringert und das ist schneller. Dann gibt's einen grünen Pfeil und in der Tabelle sehen Sie dann immer den Vorherwert, den Nachherwert und mit dem grünen Pfeil die Prozentzahl, die wie gesagt unter 100% liegt. Wenn es schlechter wird, dann ist es nach der Änderung langsamer, entsprechend ist der Wert größer als 100% und der rote Pfeil zeigt das deutlich, so das also wie hier von 123 ms auf 456 fiktive ms eine Verschlechterung auf 371% stattgefunden hat. Es gibt aber auch einen Großen Bereich von nicht-ernsthaft messbaren Änderungen, also gleichbleibende oder fast gleichbleibende Zeiten. Keine ernsthafte Änderung die man nicht auch mit den üblichen Schwankungen, Messgenauigkeiten bezeichnen könnte. Das habe ich eingegränzt als alle Werte die zwischen 90% und 110% liegen. Das gibt dann einen unerschiedenen gelben Pfeil, also selbst wenn Sie hier erst 123 ms und dann 135 ms messen. Das ist eine Verschlechterung auf 110% und nicht wirklich als Erfolg bezeichnen oder als Misserfolg. Das ist also häufig so, das man sagen muss das hat sich nicht gelohnt. Damit es möglichst übersichtig bleibt, habe ich ein sehr einfaches Beispiel-Datenmodell gewählt. Die Ausgangsdaten sind 525 Vor-und Nachnamen in der "tblStartdaten". Tatsächlich stehen dort nicht nur Vor-und Nachnamen drinnen, sondern auch noch eine Zahl und ein Datum für abweichende Datentypen. Alle Vor-oder Nachnamen sind eindeutig, das ist für ganz, ganz wenige Tests wichtig so das nachher auch die vielen Daten die da entstehen, immer noch eindeutig bleiben. Aus diesen nur 525 Vor-und Nachnamen habe ich durch eine Kreuzprodukt-Abfrage 275.000 Datensätze gemacht. Die in der "tblVieleDaten" dann enthalten sind und das ist die eigentliche Ausgangs-Datengrundlage für die Test. Die Tabelle enthält also viele Vor-und Nachnamen so wie's ein berechnetes Feldname zusammen welche eindeutig sind und dazu eine eher zufällige Zahl und ein Datum. Dazu gibt es eine untergeordnete Tabelle, die knappe 200.000 Datensätze hat und über diesen Fremdschlüssel unter viele ID verbunden sind. Es geht auch manchmal um verknüpfte Tabellen und dafür setze ich dann diese Unterdaten ein. Es sind also im Grunde nicht wirklich viele Daten, eine viertel Million und eine gute viertel Million in viele Daten und eine fünftel Million in den Unterdaten. Das scheint nicht viel aber es reicht völlig um die Unterschiede zu messen und wie gesagt, wenn die Unterschiede nicht deutlich genug sind, dann war's das auch nicht Wert. Damit Sie das gut sehe können, und auch möglicherweise selber testen, habe ich ein Test-Formular erstellt, welches die Daten, sowohl zum testen bereitstellt, als auch das Ergebnis direkt anzeigt. Es gibt 2 Schaltflächen hier mit der ich dieses SELECT-Statement direkt ausführen kann, hier als normales Select oder wenn es eine Aktionsabfrage wäre, kann ich die auch ausführen, und da diese SELECT-Statements zwischen gespeichert sind in einer Tabelle, kann ich hier Voriger und Nächster Daten jeweils anzeigen. Dazu gibt's die Möglichkeit, das ist aber mehr eine Bequemlichkeit, wenn man da mal was ändern möchte, hier den Inhalt der ja zu Fuß geschrieben ist häufig, in einen echten Abfrage-Entwurf zu kopieren und dort graphisch nachzubearbeiten, das geht manchmal schneller und ihn von dort aus auch hier wieder reinzukopieren. Am wichtigsten an diesem Formular ist aber dieser Bereich hier, wenn diese Schaltfläche gedrückt ist, werden hier Zeiten gemessen und angezeigt, und natürlich unterschieden in den reinen Datenzugriff und in das, was nachher gebraucht wird um diese Daten anzuzeigen. Und das was hier eher zufällig gerade als Beispiel-Daten zu sehen ist, ist gar nicht so abseits der Wirklichkeit. Der Zugriff dauert gar nicht so lange aber die Anzeige dauert nochmal doppelt so lange. Wenn Sie sich also mit der Zugriffsgeschwindigkeit beschäftigen, sollten Sie erstmal gucken, vielleicht kostet die Anzeige der Daten die viele Zeit und nicht der Zugriff. Dazu gibt's schließlich dann noch im Rest des Formulars diese beiden Elemente, nämlich die Möglichkeit das SQL-Statement zu sehen oder auch zu ändern, und hier im zweifelsfall die Ergebnisse so zu sehen. Das ist nicht so besonders wichtig, nur gelegentlich das man sieht ob es denn funktioniert hat und was dabei rauskommt. Damit sind wir also vorbereitet dafür die Geschwindigkeitsmessung von SQL-Statements vorzunehmen und auch zu sehen was dabei jeweils an Erfolg oder an Misserfolg zu erwarten ist.

SQL: Datenbankabfragen beschleunigen

Entdecken Sie, wo das Beschleunigungspotenzial für SQL-Datenbanken liegt und lernen Sie die Rezepte für bessere Performance.

2 Std. 15 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.03.2015

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!