Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

SQL Server 2016 Grundkurs: Administration

Datenbankoptimierungsratgeber

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Lassen Sie sich erklären, was der Datenbankoptimierungsratgeber ist und für welchen Anwendungsfall Sie diesen einsetzen können.
09:57

Transkript

In diesem Video sehen Sie, was der Datenbankoptimierungsratgeber ist, und für welchen Anwendungsfall Sie diesen einsetzen. Ich habe ihn hier bereits gestartet. Welche Wege und Methoden gibt es jetzt? Dazu schließe ich ihn nochmal. und ich beginne mal vom Ansatz. So, ich habe hier eine Abfrage und diese Abfrage kann ich jetzt zum Einen ausführen, ich kann mir den Ausführungsplan anschauen, der sagt, es wird einen Index-Seek, also eine Suche im Index durchgeführt, kein Scan. Und für mich weiß ich jetzt, das ist erstmal soweit OK. Jetzt ist das nicht immer der Fall. Jetzt kann es sein, dass eine Abfrage zum Beispiel einen Index nicht verwenden kann. Ich würde dieses Verhalten jetzt mal provozieren, indem ich sage, "Select * into Test Tabelle Test Tabelle from". Und ich überführe mir jetzt die Daten aus der person address in eine neue Tabelle mit dem Namen "Testtabelle". Der Hintergrund ist einfach, ich möchte das diese Testtabelle jetzt neu ist, keinen Index hat, keinen Schlüssel, oder irgend etwas und jetzt frage ich im Prinzp die Daten aus der Testtabelle ab und sage "Where", und das belasse ich, weil die Daten wurden ja überführt, also "Where address ID = 100". So, ich führe diese Abfrage mal aus, und bekomme unten das Ergebnis. Jetzt nehme ich mir den Ausführungsplan und hier sehe ich natürlich schon im Grunde genommen sind es die gleichen Daten, es is der gleiche Datenastz. Hier habe ich jetzt einen Tablescan, dass heißt, wenn ich auf die geschätzten Operatorkosten gehe, bin ich bei 0,277 und hier muss ich einen Tablescan machen, und wenn ich jetzt hier die Abfrage ausführe bin ich nicht bei 0,277, sondern bei 0,0032831. Also hier kann ein Index verwendet werden und ich habe natürlich wesentlich geringere Kosten. Jetzt kommt aber der DTA ins Spiel. Hier wissen wir, die ist in Ordnung. Hier haben wir festgestellt, dass ein Tablescan ausgeführt wird, das klingt erstmal nicht gut und ich versuche mal was mir der Datenbankoptimierungsratgeber dazu über die rechte Maustaste wenn ich es markiert habe, und dann abfrage im Datenbankoptimierungsratgeber analysieren, dazu für Ratschläge gibt. Ohne an diesen gesamten Optimierungsoptionen zu schrauben, gehe ich in der Standarteinstellung einfach mal drauf, und sage, analysier doch mal, und vielleicht hast Du an der Stelle ja schon für mich einen sinnvollen Vorschlag. Das ich hier also erkennen kann, ob hier vielleicht ein zusätzlich erstellter Index das Ganze mir ein bischen optimiert, und ich dann die Zeiten runterbringen kann. Genau so ist das auch, ich bekomme also jetzt den Hinweis, dass auf der Test-table mit create ein index mit dem Namen DTA-Index-Test-Table, also ein also ein Classroot Index Adventureworks Datenbank erstellt werden soll. Und wenn ich hier hinten drauf gehe, habe ich auch die entsprechende SQL-Anweisung dazu, ich sehe also nochmal das ein gruppierter Index erstellt wird, auf welches Objekt, und die Spalte, die Address ID. Aufsteigend sortiert, weil natürlich meine Where-Klausel auf die Adress ID entsprechend geht, und dann natürlich ein Index Sinn macht. Und ich schlage immerhin 98% Verbesserung heraus. Das klingt gut, und das animiert mich natürlich auch dazu, unter Aktionen zu sagen, Ich will die Empfehlung ja sofort anwenden. Das macht ja wirklich an der Stelle Sinn. Ich führe das aus, lege mein Databasetuningadvisor beiseite, führe jetzt diese Abfrage erneut aus, schaue mir den Ausführungsplan an, und sehe natürlich jetzt, dass er einen Clustered-Indexscan macht. Und das hier 0,003 also wirklich eine wesentliche Verbesserung der Abfragezeit für diese Abfrage erreicht wurde. Das ist im Grunde genommen das Konzept von diesem Datenbankoptimierungsratgeber, der mir jetzt hilft, Abfragen zu analysieren. Aber nicht nur einzelne Abfragen, ich kann also hier auch wenn ich eine neue Sitzung mal starte, das Ganze also auch von hier beginnen, initiieren. Und er gibt mir jetzt auch die Chance, gegen eine Tabelle, oder Datei zu gehen, also sprich, wenn ich Aufzeichnungen gemacht habe, zum Beispiel mit einem Trace, könnte ich jetzt hier auf Datei gehen, suche mir meinen Trace, den ich gemacht habe raus, öffne den und sage "schau doch mal, meine Adventureworks Datenbank, meine Applikationen, ich habe das aufgezeichnet in einer Tracedatei, und mach doch jetzt mal Vorschläge, ob Du feststellst, dass es da Optimierungspotential gibt, aufgrund meiner Queries, die aus meiner Applikation heraus laufen. Und jetzt kann ich natürlich nur hoffen, dass mein Trace dort Dinge eingefangen hat die er sinnvoll auswerten kann. In dem Fall ist es nicht der Fall. Das hängt aber damit zusammen, sass es der Trace war, wo ich hier lediglich mit einer Schleife insert in eine tabelle geschrieben habe und nicht wie eben demonstriert, mal Abfragen zum beispiel auf eine nicht indizierte Tabelle. Zeigt aber sehr schön das man hier diese verschiedenen Rangehensweisen hat. Immer die Datenbank selektiert. Entweder eine Trace-Datei oder Trace-Tabelle angibt, aber auch gegen den Plan-Cache gehen kann, also das ist der Bereich, im Arbeitsspeicher vom SQL-Server, wo so genannte Ausführungspläne zwischengespeichert werden, für jede Abfrage, die auch ausgeführt wird, wird ein Ausführungsplan generiert, der wird im Plan-Cache versucht zu halten, es sei denn, mein SQL-Server kommt stark unter RAM Druck, wo er also verfrüht diese Pläne rausschmeisst. Jetzt kann ich schon auch diesen Plan-Cache mal nutzen, und kann sagen, mach doch mal eine Analyse, weil da stehen ja auch Queries drin. Also entweder ad hoc mit dem Managementstudio beschrieben, rechte Maustaste auf das Querie, und dann analysieren, oder mein Plan-Cache, wo sich ja die letzten Abfragen drin befinden, beziehungsweise eine Arbeitsauslastungsdatei, also eine Trace-Datei, wo ich jetzt vielleicht 24 Stunden oder einen gewissen Zeitraum aufgezeichnet habe, und dann mal schaue, bringt er Optimierungsratschläge. Für zwei Dinge ist der DTA zu gebrauchen. Also im Englischen der Databasetuningadvisor, zu Deutsch der Datenbankoptimierungsratgeber. Gekürzt gerne mal DTA. Für zwei Dinge. Das eine sind wirklich jetzt Empfehlungen für Indizes, und das andere sind Empfehlungen für Statistiken. Die gibt er auch, wenn also Objektstatistiken fehlen, veraltet sind, also aktualisiert werden müssen, oder neu erstellt, dann bekomme ich auch Hinweise und kannn natürlich auf einem System das nachziehen. Es erfordert ein bischen Erfahrung, sicherlich, der Umgang mit dem DTA, aber im Grunde genommen ist es ein schönes Tool, was mir schon mal hilft, Tendenzen zu zeigen, Richtung wo ich sagen kann, OK, also schau mal hier gibts doch ein paar Indizes, wo er sagt die fehlen. Ich schaue vielleicht mal hin, ich kenne ja meine Daten am Besten, ob wir wirklich da etwas machen können und der eine oder andere Index unter anderem dann sinvoll ist. Und in dem Fall hier jetzt keine Empfehlung rausgekommen sind, also das sind so Sachen, die man hier vornehmen kann. Vielleicht noch ein Hinweis, Warnung würde ich nicht sagen, ein Hinweis an der Stelle. Aber immer dann, wenn ich jetzt natürlich sehr einseitig hier ran gehe, dass heißt, es ist ja jetzt kein Abbild über einen Tag oder aus einer Applikation real heraus. Es sind einzige Queries. jetzt kann ich natürlich eine Tabelle haben, und schreibe hier mal sieben oder zehn Abfragen und er macht mir zehn Vorschläge für Indizies auf die selbe Tabelle, immer eins auch bedenken. Jeder Index, der auf einer Tabelle existiert, hat im grunde genommen auch einen negativen Effekt, wenn Inserts auf seine Tabelle stattfinden, das heißt, die gesamten Indexstrukturen für jede Spalte die indiziert ist, ein clustered, dann vielleicht noch sechs weitere non-clustered , wo es für jeden non-clustered-Index einen B-Baum gibt, und diese Indexseiten mit aktualisiert werden müssen, das führt natürlich auch zu Verschlechterungen bei Inserts, das heißt also, der DTA ist eine Hilfestellung, ist eine Richtung, ich kann mal Abfragen analysieren, man sollte aber wissen, was man tut und sich da auch ein Stück mit auseinandersetzen, zumal abschließend hier noch einmal reingegangen und auf einen Bereich hingewiesen, der natürlich auch komplex ist. Diese Berücksichtigung der optimierungsoption. Also wir haben jetzt erst mal mit den Standartoptionen nur Indizes im Programm. Ich kann auch sagen, ich will nur die nicht-gruppierten, also die non-clustered oder Indizes und indizierte Sichten. ich habe hier unten die Möglichkeit festzulegen, ob ich Tabellen partitionieren will, also ob die Vorschläge, die ich bekomme ausgerichtet sind, an einer Partitionierungsstrategie. Ob die physischen Entwurfsstrukturen in der Datenbank geändert werden sollen, also sprich, ich bin bereit, mein gesamtes Datenbankschema zu überarbeiten. Und so ist das alles auch ein Stück eine "Was wäre Wenn" geschichte, und meine Empfehlung, wenn man beginnt, sich hier einzuarbeiten, fangen Sie an mit nicht gruppierten Inidzes, oder mit Indizes, arbeiten sich dann Stück für Stück vor und wählen Sie zunächst erst mal nicht das Sie Tabellenstrukturen ändern wollen, oder Tabellen partitionieren. Zumal die Partitionierung von Tabellen auch ein feature von der Enterprise Edition ist.

SQL Server 2016 Grundkurs: Administration

Erlernen Sie die Administration des SQL Server 2016 vom Umgang mit dem Management Studio bis zu Automatisierung und Monitoring.

6 Std. 10 min (60 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Hersteller:
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:08.05.2017

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!