Aktualisieren
Dies ist jetzt in SQL Server Azure implementiert. Es werden Empfehlungen generiert
Die Indexverwaltung kann so konfiguriert werden, dass sie automatisch erfolgt .
Aktivieren Sie die automatische Indexverwaltung
Sie können den SQL-Datenbankratgeber so einstellen, dass Empfehlungen automatisch implementiert werden. Sobald Empfehlungen verfügbar sind, werden sie automatisch angewendet. Wie bei allen Indexoperationen, die vom Service verwaltet werden, wird die Empfehlung zurückgesetzt, wenn die Auswirkungen auf die Leistung negativ sind.
Ursprüngliche Antwort
Einige Datenbanken erstellen bereits Indizes automatisch.
In SQL Server kann der Ausführungsplan manchmal einen Indexspool- Operator enthalten, bei dem das RDBMS dynamisch eine indizierte Kopie der Daten erstellt. Dieser Spool ist jedoch kein beständiger Teil der Datenbank, der mit den Quelldaten synchron gehalten wird, und er kann nicht zwischen Abfrageausführungen geteilt werden, was bedeutet, dass die Ausführung solcher Pläne dazu führen kann, dass temporäre Indizes für dieselben Daten wiederholt erstellt und gelöscht werden.
Vielleicht werden RDBMS in Zukunft in der Lage sein, persistente Indizes je nach Arbeitslast dynamisch zu löschen und zu erstellen.
Der Prozess der Indexoptimierung ist letztendlich nur eine Kosten-Nutzen-Analyse. Es ist zwar richtig, dass Menschen im Prinzip mehr Informationen über die relative Bedeutung von Abfragen in einer Arbeitslast haben, aber es gibt keinen Grund, warum diese Informationen dem Optimierer nicht zur Verfügung gestellt werden könnten. SQL Server verfügt bereits über einen Ressourcen-Governor, mit dem Sitzungen je nach Priorität in verschiedene Workload-Gruppen mit unterschiedlichen Ressourcenzuordnungen eingeteilt werden können.
Die von Kenneth erwähnten fehlenden Index-DMVs sollen nicht blind implementiert werden, da sie nur die Vorteile einer bestimmten Abfrage berücksichtigen und nicht versuchen, die Kosten des potenziellen Index für andere Abfragen zu berücksichtigen. Es werden auch keine ähnlich fehlenden Indizes konsolidiert. ZB kann die Ausgabe dieser DMV fehlende Indizes auf A,B,C
und meldenA,B INCLUDE(C)
Einige aktuelle Probleme mit der Idee sind
- Die Qualität einer automatisierten Analyse, die den Index nicht tatsächlich erstellt, hängt in hohem Maße von der Genauigkeit des Kalkulationsmodells ab.
- Selbst auf dem Gebiet der automatisierten Analyse kann eine Offline-Lösung gründlicher sein als eine Online-Lösung, da es unbedingt erforderlich ist, dass eine Online-Lösung den Live-Server nicht mit einem hohen Aufwand für die Buchhaltung belastet und den primären Zweck der Ausführung von Abfragen beeinträchtigt.
- Die Indizes, die automatisch als Antwort auf die Arbeitslast erstellt werden, werden notwendigerweise als Antwort auf Abfragen erstellt, die sie als nützlich erachtet hätten, und bleiben daher hinter den Lösungen zurück, die die Indizes im Voraus erstellen.
Es ist wahrscheinlich zu erwarten, dass sich die Genauigkeit von Kalkulationsmodellen mit der Zeit verbessert, aber Punkt 2 scheint schwieriger zu lösen und Punkt 3 ist von Natur aus unlösbar.
Trotzdem befindet sich wahrscheinlich die überwiegende Mehrheit der Installationen nicht in dieser idealen Situation mit qualifiziertem Personal, das Änderungen der Arbeitsbelastung kontinuierlich überwacht, diagnostiziert und antizipiert (oder zumindest darauf reagiert).
Das AutoAdmin-Projekt bei Microsoft Research läuft seit 1996
Das Ziel dieses Projekts ist es, Datenbanken selbst zu optimieren und zu verwalten, indem das Wissen über die Arbeitslast genutzt wird
Die Projekthomepage listet mehrere interessante Projekte auf. Einer ist hier besonders relevant für die Frage
Ein weiteres interessantes Problem tritt auf, wenn kein DBA verfügbar ist (z. B. eine eingebettete Datenbank oder ein kleines Unternehmen). In solchen Szenarien kann ein kontinuierlicher Indexoptimierungsansatz mit geringer Berührung wichtig werden. Wir haben Lösungen untersucht ... [in] „ Ein Online-Ansatz zur Optimierung des physischen Designs “ in ICDE 2007.
Die Autoren geben an
Angesichts der zunehmend verbreiteten DBMS-Funktionen wie Online-Indizes ist es ansprechend, automatischere Lösungen für das Problem des physischen Designs zu suchen, die den Stand der Technik voranbringen.
Die Arbeit stellt einen Algorithmus vor
Seine Hauptmerkmale sind:
- Bei der Optimierung von Abfragen identifizieren wir einen relevanten Satz von Kandidatenindizes, die die Leistung verbessern würden. Mit dieser Funktion kann die Abfrageverarbeitung parallel zu im Hintergrund erstellten Indizes fortgesetzt werden.
- Zur Ausführungszeit verfolgen wir die potenziellen Vorteile, die uns durch das Nichtvorhandensein solcher Kandidatenindizes entgehen, sowie die Nützlichkeit vorhandener Indizes bei Vorhandensein von Abfragen, Aktualisierungen und Platzbeschränkungen.
- Nachdem wir genügend „Beweise“ dafür gesammelt haben, dass eine physische Designänderung von Nutzen ist, lösen wir automatisch Indexerstellungen oder -löschungen aus.
- Die Online-Natur unseres Problems impliziert, dass wir im Allgemeinen hinter den optimalen Lösungen zurückbleiben, die die Zukunft kennen. Indem wir die Beweise sorgfältig messen, stellen wir jedoch sicher, dass wir nicht wesentlich unter „verspäteten“ Entscheidungen leiden, wodurch die Höhe des entstandenen Schadens begrenzt wird
Die Implementierung des Algorithmus ermöglicht eine Drosselung als Reaktion auf Änderungen der Serverauslastung und kann auch die Indexerstellung abbrechen, wenn während der Erstellung die Auslastungsänderungen und der erwartete Nutzen unter den Wert fallen, der als sinnvoll erachtet wird.
Das Fazit der Autoren zum Thema Online versus traditionelles Physical Tuning.
Die Online-Algorithmen in dieser Arbeit sind nützlich, wenn Datenbankadministratoren sich über das zukünftige Verhalten der Arbeitslast nicht sicher sind oder keine Möglichkeit haben, eine umfassende Analyse oder Modellierung durchzuführen. Wenn ein DBA über vollständige Informationen zu den Auslastungseigenschaften verfügt, ist eine statische Analyse und Bereitstellung durch vorhandene Tools (z. B. [2, 3]) eine bessere Alternative.
Die Schlussfolgerungen hier ähneln denen in einem anderen Artikel Autonomous Query-driven Index Tuning
Unser Ansatz kann den Indexberater nicht schlagen, wenn die gesamte Arbeitslast im Voraus bekannt ist. In dynamischen Umgebungen mit sich entwickelnden und sich ändernden Arbeitslasten führt der abfrageorientierte Ansatz jedoch zu besseren Ergebnissen.