Autonomic Database Tuning im Microsoft SQL Server 2005

Werbung
Autonomic Database Tuning im Microsoft SQL Server 2005
Blockseminar Autonomic Database Tuning
Stephan Arenswald
Lehrstuhl für Datenbanken und Informationssysteme
Institut für Informatik
Friedrich-Schiller-Universität Jena
Ernst-Abbe-Platz 2
07743 Jena
[email protected]
Abstract: Diese Ausarbeitung beschäftigt sich mit den Autonomic Database Tuning
Features im Microsoft SQL Server 2005. Es gibt einen allgemeinen Überblick über die
vorhandenen Techniken und mitgelieferten Werkzeuge. Des weiteren werden
Statistiken gezeigt, welche die Qualität der Fähigkeiten darlegen.
1 Einleitung
Der Microsoft SQL Server gilt neben IBMs DB2 UDB (aktuell Version 9) und Oracles
Oracle Database 10g als eines der meistgenutzten Datenbankmanagementsysteme weltweit.
Die aktuelle Version ist Microsoft SQL Server 2005 (Service Pack 1).
Mit Erscheinen der Version 2005 wurden einige neue Funktionen bezüglich des Autonomic
Database Tuning eingeführt. Microsoft stellte sich dazu eigene Anforderungen welche im
Produkt umgesetzt werden sollen.
 Integrierte Auswahl von physischen Design-Features: Bisher gab es für
verschiedene Tuningaufgaben verschiedene Advisor, also Programme, welche
Vorschläge für den physischen Datenbankentwurf erstellten. Diese arbeiteten
jedoch nicht zusammen, so dass verschiedene Advisors Vorschläge liefern konnten,
welche im Einzelnen zweckvoll sind, aber zusammen die Performance senken. Um
dem entgegenzuwirken, setzt Microsoft voraus, dass es nur ein Werkzeug gibt,
welches einen Vorschlag für alle physischen Datenbankfeatures in Abhängigkeit
voneinander liefert [BC07].
 Handhabbarkeit (Manageability): Trotz guter Performance eines Autonomic
Computing Toolkits, sollte dabei die Handhabbarkeit nicht verloren gehen. Es ist
also wichtig das die Features zugänglich sind und auch genauso leicht verwendet
werden können. Aber nicht nur die Werkzeuge selbst, sondern auch deren
Ergebnisse sollen zur besseren Manageability beitragen. Zum Beispiel wird
horizontale Partitionierung von Tabellen oft dazu verwendet leichteres Backup,
Insert oder Delete von Daten zu gewährleisten. Sind nun alle Tabellen und Indexe
gleich partitioniert trägt dies zur besseren Administration bei.
1
 Skalierbarkeit: Ein Advisor muss in der Lage sein, Vorschläge in akzeptabler Zeit
auch für sehr große Datenbanken zu erstellen.
 Fähigkeit mit sehr geringem Overhead einen Produktionsserver zu tunen: Um
einen Server performant zu tunen, ist es intuitiv, die Daten auf einen Testserver zu
kopieren, auf welchem das Tuning stattfindet. Je nach Größe der Daten kann das
Kopieren aber die Performance stark senken. Zusätzlich kann währenddessen auf
dem Produktionsserver eine ganz neue Situation eintreten, welche neue Probleme
mit sich bringt. Diese können auf dem Testserver nicht berücksichtigt werden. Auch
unterschiedliche Hardware und Software spielt eine wichtige Rolle. Somit kann ein
System nur auf dem Produktionsserver autonom optimiert werden. Entsprechend
sollte der dadurch entstehende Overhead gering gehalten werden.
 Scriptability: Wegen der gewachsenen Fülle an Funktionen und der Größe der
Tuningaktionen ist es wichtig, die Möglichkeit von Skripten zu bieten. Diese helfen
nicht nur einen Tuningauftrag übersichtlicher zu gestalten, sondern dienen auch der
Wiederverwendbarkeit. 
 Anpassung (Customization): Die Entwicklung eines Werkzeuges zum autonomen
Tuning von Datenbanken ist nicht trivial. Zum Einen soll dieses Programm
automatisch Vorschläge erstellen und das Design umsetzen und zum Anderen soll
der Administrator die Möglichkeit besitzen den gesamten Prozess zu überwachen
und an jeder beliebigen Stelle einzugreifen.
Der Database Tuning Advisor (DTA) [AC04] ist die Antwort auf diese Anforderungen.
Dieses Tool wird seit Version 2005 mitgeliefert. Es beherrscht das integrierte Tuning von
Indexen, von Materialized Views und durch horizontale Partitionierung. Tabelle 1 zeigt einen
Vergleich des SQL Server 2005 mit der Vorgängerversion einschließlich der Editionen
bezüglich des Vorhandenseins des DTA. Der sogenannte Index Tuning Wizard (ITW) des
SQL Server 2000 [ACN99] ist ausschließlich auf Indexe spezialisiert.
Version
SQL Server 2000
ITW
SQL Server 2005
DTA
Edition
Alle außer MSDE
Autonomic Tuning
Express
Workgroup
Standard
Enterprise
Tabelle 1: Vergleich der SQL Server Versionen in Bezug auf Vorhandensein von ITW und DTA
Kapitel 3 geht näher auf den DTA ein. Es erläutert den Aufbau und das zugrunde liegende
Kostenmodell und beschreibt das Tuning in einem Produktions-/Testserversystem. Zuvor
beschäftigt sich Kapitel 2 jedoch mit Selbst-Management-Funktionen des SQL Servers.
Microsoft konzentriert sich im Bereich Forschung hauptsächlich auf Selbst-Tuning und
Selbst-Administrierung von Datenbanksystemen. Das als „
A
u
t
o
A
d
m
i
n
“
g
e
t
a
u
f
t
e
P
r
o
j
e
k
t
bietet bereits eine Reihe von Veröffentlichungen1 zu diesen Themen.
1
http://research.microsoft.com/dmx/autoadmin/
2
2 Selbst-Management
Autonomes Datenbank-Tuning bedeutet, das sich ein System selbst managt. Das heißt, es
kann sich selbst konfigurieren, wenn es nötig ist. Genauso gut kann es sich optimieren.
Im folgenden Abschnitt 2.1 wird auf die Selbst-Konfiguration im Microsoft SQL Server 2005
näher eingegangen. Dabei werden sowohl Konfigurationsparameter als auch
Speichermanagement behandelt. Unterkapitel 2.2 geht im Anschluss näher auf selbst
optimierende Features ein. Der Focus wird dabei auf Histogrammen liegen. Darauf folgen in
Abschnitt 2.3 Selbstoptimierungsfeatures des Query Prozessors. Im letzten Abschnitt 2.4
wird dann noch die Storage Engine kurz behandelt.
2.1 Selbst-Konfiguration des Datenbankmanagementsystems
In den großen Datenbankmanagementsystemen gibt es sehr viele Einstellmöglichkeiten. Dazu
zählen vor allem viele Konfigurationsparameter. Der SQL Server besitzt in Version 2005
circa 66 solcher sogenannter Optionen2.
Damit sich ein System selbst konfigurieren kann, muss es unter anderem
Konfigurationsparameter anpassen können. Das Problem dabei ist nicht die Änderung,
sondern, dass ein Datenbankmanagementsystem in manchen Fällen nach der Anpassung neu
gestartet werden musste. In Anwendungen, wo die Daten stets zur Verfügung stehen müssen,
sind die Ausfallzeiten dadurch aber zu hoch. Deshalb bemühen sich die Hersteller
zunehmend die Parameter Online-konfigurierbar zu implementieren.
Von den genannten 66 Parametern erfordern nur 14 einen Neustart, entweder der Instanz oder
des gesamten Systems. Wiederum 6 von der Gesamtanzahl sind selbst konfigurierend.
Tabelle 2 gibt einen Überblick über diese Parameter (RR = Neustart des Systems
erforderlich, SC = Selbstkonfigurierende Option).
Parameter (Option)
Minimalwert
Maximalwert
Defaultwert
index create memory (SC)
704
2147483647
0
locks (RR, SC)
5000
2147483647
0
max server memory (SC)
16
2147483647
2147483647
min server memory (SC)
0
2147483647
8
recovery interval (SC)
0
32767
0
user connections (RR, SC)
0
32767
0
Tabelle 2: Selbstkonfigurierbare Parameter
2
http://msdn2.microsoft.com/de-de/library/ms189631.aspx
3
Zwei der angegebenen Parameter sind selbstkonfigurierbar und benötigen einen Neustart. Der
Administrator legt in diesem Fall einen Maximalwert fest wodurch das Intervall für die
automatische Anpassung eingeschränkt wird. Auf den ersten Blick erscheint dieses Vorgehen
unverständlich. Es macht jedoch Sinn, wenn man daran denkt, dass ein Computer durch die
verwendete Hardware gewisse Grenzen besitzt. Ein Datenbankadministrator kann zum
Beispiel bestimmen, wieviel Speicher dem System mindestens und dem
Datenbankmanagementsystem maximal (max server memory) zur Verfügung stehen soll.
Innerhalb dieser Grenze kann der SQL Server den Speicher autonom allokieren und wieder
frei geben.
Der folgende Abschnitt geht auf das bereits angesprochene dynamische Speichermanagement
genauer ein.
2.2 Dynamisches Speichermanagement in der Relationalen Engine
Zur Selbst-Konfiguration gehören nicht nur Parameter. Auch autonomes
Speichermanagement spielt eine wichtige Rolle. Damit einem System immer wieder Speicher
zur Verfügung steht muss dieser nach fertigen Aktionen freigegeben werden.
Der SQL Server allokiert in der Grundeinstellung soviel Speicher wie er für sich benötigt.
Einschränkungen dabei ergeben Konfigurationsparameter wie zum Beispiel max server
memory oder das Betriebssystem. Der vorhandene Speicher wird zum Beispiel für Buffer
Pools verwendet. Sie sind unter anderem dafür verantwortlich teure Festplattenzugriffe zu
vermeiden und werden ausschließlich von SQL Server internen Objekten verwendet. Objekte
außerhalb des Serverprozesses machen keinen Gebrauch von den Buffer Pools.
Startet nun der SQL Server reserviert er sich genau den Speicher, den er insgesamt benötigt,
schafft sich davon, wie bereits erwähnt, nur soviel an, wie er gerade braucht. Während seiner
Laufzeit passt er die allokierte Menge immer wieder an, je nach Bedarf. Wie bereits erwähnt
wird immer darauf geachtet, dass das Betriebssystem in keine Engpässe gerät. Startet also ein
Anwendungsprogramm wird Speicher freigegeben und Daten werden auf Festplatte
ausgelagert. Beendet sich dieses Programm kann der SQL Server den schnelleren
Hauptspeicher bei Bedarf wieder verwenden um ausgelagerte Elemente zurück zu holen.
Eine Neuerung in Version 2005 ist, das Buffer Pools ihren Speicher durch die Adress
Windowing Extension (AWE) erweitern können. Dies ist eine Technik der 32-Bit
Serverbetriebssysteme (Microsoft Windows 2003, Longhorn Server) womit es möglich ist die
theoretisch maximale Grenze von 4 GB für Hauptspeicher zu überwinden.
4
64 GByte
2-3 GByte
AWE Window
AWE Memory
Mapping
Abbildung 1: Funktion der Adress Windowing Extension (AWE)
Abbildung 1 zeigt das Prinzip dieser Erweiterung. In einem 32-Bit Windowssystem stehen
von den maximal 4 GB Hauptspeicher den Anwendungen 2 GB (3 GB wenn das
Betriebssystem mit der Option /3GB geladen wird) zur Verfügung. Den Rest reserviert sich
das System. Durch AWE ist es nun möglich diesen Speicher auf maximal 64 GB zu mappen,
was Anwendungen wie dem SQL Server zu Gute kommt. Buffer Pools können nun,
abgesehen von den anderen Objekten, die Speicher benötigen, bis zu 64 GByte für sich
beanspruchen und dynamisch verwalten.
2.3 Selbst-Optimierung des Query Prozessors
Der Query Prozessor bearbeitet Anfragen und optimiert diese um die Ausführungszeit zu
minimieren. Dies kann durch Statistiken unterstützt werden.
Viele Datenbankmanagementsysteme verwenden Histogramme zur Anfrageoptimierung. Ein
Histogramm stellt die Häufigkeitsverteilung von Messwerten dar. Abbildung 2 enthält ein
Beispiel. In diesem wird eine SFW-Anfrage mit verschiedenen Bedingungen und deren
Ergebnisse aufgetragen. Es ist dabei nicht wichtig, dass der gesamte Wertebereich abgedeckt
wird.
5
Gehalt von Mitarbeitern einer Firma
60
50
40
30
SELECT count(*) FROM
A
n
g
e
s
t
W
H
E
R
E
G
e
h
a
l
t
…
20
10
0
< 1000
> 1500
< 2000
> 2010
< 2050
> 3000
Abbildung 2: Beispiel für ein Histogramm
Aus dem Histogramm ist erkennbar, dass es zum Beispiel eine Anfrage über die Anzahl der
Gehälter größer 3000 gab. Sollte diese Anfrage noch einmal kommen hat der Optimizer
bereits einen quantitativen Anhaltspunkt über das Ergebnis. Dies kann zum Beispiel für die
Größe des Sperrgranulates von Bedeutung sein. Wenn die Angest-Tabelle 115 Tupel
beinhaltet, so könnte der Optimizer entscheiden die ganze Tabelle zu sperren. Bei mehreren
tausend Einträgen jedoch würde es ausreichen einzelne Seiten zu sperren.
Kommerzielle Datenbankprodukte verwenden, wie bereits erwähnt, für Statistiken und zur
Query Optimierung unter anderem Histogramme. Sie bringen allerdings ein
Performanceproblem wegen zu aufwendiger Algorithmen und dem damit verbundenen
Zeitaufwand mit sich. Da sich eindimensionale Histogramme nur auf ein Attribut einer
Relation beziehen, müssten für aussagekräftigere Statistiken mehrdimensionale Histogramme
verwendet werden. Dadurch können mehrere Attribute einer Relation zusammen und in
Abhängigkeit voneinader eingebracht werden. Wegen der zu großen Performanceprobleme
gibt es aber kaum einen Datenbankadministrator welcher diese trotz Implementierung
verwendet. Um diesem Problem entgegen zu wirken gibt es im SQL Server 2005 eine neue
Art Histogramme. Die sogenannten Self-Tuning Histogramme (ST-Histogramme) [AC99]
sind selbst für den mehrdimensionalen Fall in Erstellung und Wartung schnell genug. Es gibt
drei Operationen, welche immer wieder anfallen und entsprechend schnell bearbeitet werden
müssen. (1) Die Erstellung des Histogramms, (2) Verfeinern der Messwerte (refining of
frequencies) und (3) Restrukturierung der Messwertintervalle. Im folgenden werden diese
jeweils für eindimensionale und mehrdimensionale ST-Histogramme erläutert.
6
Eindimensionaler Fall: Eine Dimension bedeutet das Histogramm wird auf einem Attribut
(Spalte einer Tabelle) erstellt. Zum Erstellen wird die Anzahl der Tupel T, ein geschätztes
Intervall [min,max] für den Wertebereich und die Größe der Buckets B (ein Bucket ist ein
Intervall aus dem [min,max] Bereich) benötigt. Um falsche Schätzungen zu vermeiden, kann
der Wertebereich des Datentyps verwendet werden. Bei Integer zum Beispiel
[0,4.294.967.295]. Die Bucketgröße wird gleichmäßig zwischen min und max aufgeteilt und
die Messwerte werden auf T/B als Startwert gesetzt.
Merge
Split
Messwerte /
Tupelanzahl
10
13
17
14
70
20
Buckets
1
2
3
4
5
6
35 35
20
Messwerte /
Tupelanzahl
23
17
14
Buckets
1
2
3
4
5
6
Abbildung 3: Rekonstruierung eines eindimensionalen ST-Histogramms
Während die Verfeinerung der Messwerte durch eine einfache Fehlerabschätzung
funktioniert, dass heißt es wird der absolute Fehler bestimmt um die Buckets danach
anzupassen, werden bei der Restrukturierung zusätzliche Werte benötigt. Zum einen wird
eine Kennzahl für den Abstand zweier benachbarter Messwerte benötigt. Diese ergibt sich
aus einem frei gewählten Prozentsatz m (
m
e
i
s
t
≤
1
%
)
u
n
d
d
e
r
A
n
z
a
h
l
d
e
r
T
u
p
e
l
T insgesamt.
Dann werden die benachbarten Buckets gesucht deren Messwerte ≤
m
*
T
sind. Abbildung 3
zeigt ein solches Beispiel. Für dieses wurde der Wert m * T = 3 gewählt. Daraus ergeben sich
nur die Buckets 1 und 2. Alle so entstandenen Mengen werden zusammengenommen.
Die Anzahl der Buckets vor und nach der Aktualisierung muss gleich sein. Daraus folgt, das
einige geteilt werden müssen. Die Anzahl derer wird über eine Kennzahl bestimmt. Für das
Beispiel sei diese k = 1. Die k größten Buckets werden zueinander ins Verhältnis gesetzt.
𝑥
𝑦
𝑙
=𝑠
;
𝑙
=𝑠
; …
𝑥
𝑦
𝑥
+𝑦
+⋯ 𝑦
+𝑥
+⋯
 𝑥
,𝑦
,…
sind die Messwerte der k größten Buckets
 𝑙
ist die Anzahl der durch den Mergeschritt fehlenden Buckets
 𝑠
,𝑠
,…
sind die Verhältnisse für die Aufteilung (Bucket mit Messwert x muss in
𝑥
𝑦
𝑠
+ 1 Buckets aufgeteilt werden)
𝑥
Im Beispiel gibt es nur einen Splitbucket wodurch 𝑠
= 1 ist. Das heißt er wird geteilt.
𝑥
7
Mehrdimensionaler Fall: Die existierenden eindimensionalen Histogramme können als
Ausgangspunkt gewählt werden. Sie werden nun in einer n-dimensionalen Tabelle
angeordnet, wie in Abbildung 4 für n=2 zu sehen. Die Anpassung der Werte geschieht wie
bei dem eindimensionalen Fall anhand von Fehlerabschätzungen, mit dem Unterschied, dass
die Buckets nun mehrdimensionale Intervalle abdecken.
Σ
200
Σ 50
Σ 60
65 –
10 = 55
14 –
10 = 4
65
Farbskala mit Bereich
von kleinstem zum
größten Wert der
oberen Tabelle
0
Abbildung 4: Rekonstruierung eines mehrdimensionalen ST-Histogramms
Bei der Restrukturierung werden wieder Kennzahlen für den Merge- und den Splitschritt
angegeben. Für erstere wird der größte Abstand zwischen zwei benachbarten Zeilen, auch
Partitionen genannt, bestimmt. Liegt das Ergebnis unter der Mergekennzahl, so werden die
beiden Partitionen zusammen gerechnet. Für das Splitten wird die Summe aller Messwerte
einer Partition bestimmt. Diejenige mit dem größten Ergebnis wird geteilt.
Abbildung 4 veranschaulicht ein Beispiel. Für eine Mergekennzahl der Größe 5 gibt es nur
eine Kombination von Spalten deren größte Differenz darunter liegt (2 und 3). Diese beiden
werden zusammen gerechnet. Die erste Partition ist diejenige mit der größten Summe der
einzelnen Messwerte. Bei einer Splitkennzahl der Größe 1 wird nur diese geteilt. Das
Ergebnis der Restrukturierung zeigt die untere Tabelle. Man kann sehen, dass die
Werteverteilung harmonischer ist.
Verwendung im SQL Server 2005: Die Verwendung von ST-Histogrammen im SQL
Server 2005 zeigt Abbildung 5. Es gibt zwei Wege über welche der Query Optimizer diese
Statistiken nutzen kann.
 Online: Nachdem von der Query Engine ein optimierter Zugriffspfad erstellt wurde
wird die SFW-Anfrage ausgeführt. Das Ergebnis ist die Anzahl der Tupel für das
Intervall, welches durch die WHERE-Klausel begrenzt wurde. Das ST-Histogramm
bekommt dadurch kostenlose Messwerte. Dieser werden während der Laufzeit
eingearbeitet, so dass der Optimizer auf ein aktuelles Histogramm zurückgreifen
kann.
8
Abbildung 5: Tuning mit Hilfe von ST-Histogrammen
 Offline: In diesem Fall werden die Messwerte nicht sofort an das ST-Histogramm
übergeben. In einer Workload-Datenbank werden sowohl die Anfragen als auch
deren Ergebnisse gespeichert. Zu einem vom Administrator festgelegten Zeitpunkt
werden diese abgearbeitet wodurch der laufende Betrieb bei einem günstigen
Zeitpunkt weniger behindert wird. Dadurch ist auch möglich das System zu tunen,
wenn das Datenbankmanagementsystem selbst offline ist.
2.4 Selbst-Tuning der Storage Engine
Die Storage Engine ist unter anderem für Nebenläufigkeit, Buffering, Recovery und Memory
Management zuständig. Während auf letzeres bereits Abschnitt 2.2 näher eingegangen ist,
behandelt der folgende Text Ressourcen-Optimierungsstrategien.
Ressourcen sind zum Beispiel vom System zur Verfügung gestellter Hauptspeicher und
Festplattenspeicher. Bevor sie genutzt werden, kann die Storage Engine in Bezug auf SelbstTuning zuerst auf die zugehörige Operation und die Verfügbarkeit der Ressource schauen,
um einen optimierten Speicherplan bereit zu stellen. Dazu gehört zum Beispiel die
automatische Bestimmung des Lockgranulats.
3 Database Tuning Advisor
Der DTA ist ein, im SQL Server 2005, neu hinzu gekommenes Werkzeug für das Tuning
eines Datenbankmanagementssystems. Wie bereits in Kapitel 1 beschrieben dient er zur
integrierten Erstellung von physischen Datenbankdesigns. Im Laufe dieses Abschnitts wird
die Architektur näher erläutert und Statistiken werden die Verbesserung gegenüber dem
Vorgänger (ITW) darstellen.
9
Databases
Workload
Storage, Time,
Managability
DB-Admin
Tools,
Applications
XML-Input
Column Group
Restriction
Candidate
Selection
Microsoft SQL Server
2005
Query
Optimizer
Merging
Enumeration
Physical
XML-Output
Design
Recommend
ation
Abbildung 6: Architektur des Database Tunging Advisors
Abbildung 6 gibt einen Überblick über die Architektur und deren Zusammenarbeit mit dem
Query Optimizer des SQL Servers. Der Kreislauf bringt das sogenannte Iterative Tuning mit
sich. Das gleiche Prinzip wurde bereits bei ST-Histogrammen verwendet. Die Tuningaktion
erzeugt ein Ergebnis, welches für einen erneuten Durchlauf zur Optimierung verwendet
werden kann. Bei diesem Kreislauf gibt es keine Beschränkung auf ein physisches
Designfeature. Er ist also sehr leicht erweiterbar, da sich verschiedenste physische
Designfeatures auf die vier Teile abbilden lassen.
Bevor auf die einzelnen Schritte genauer eingegangen wird, muss das Kostenmodell erläutert
werden. Das heißt wonach entscheidet der DTA welcher Entwurf kostengünstig ist, denn für
einen optimalen Wert sollten mehrere Vorschläge vorliegen aus welchem der beste gewählt
w
i
r
d
.
D
a
s
K
o
s
t
e
n
m
o
d
e
l
l
b
a
s
i
e
r
t
a
u
f
d
e
r
„
w
h
a
t
-i
f
“
-Analyse [CN98]. Das heisst, was passiert
wenn genau ein Parameter um einen bestimmten Wert verändert wird. Damit ist es möglich
horizontale Partitionierung, Indexe und materialisierte Sichten zu simulieren. Also werden
verschiedene Konfigurationen getestet und die billigste wird ausgewählt.
Beispiel: Gegeben sind eine Query Q und zwei Konfiguration C1 und C2. Q wird auf sowohl
auf C1 als auch auf C2 simuliert. Gilt nun 𝑡
(𝐶
𝑡
(𝐶
1) ≤
2 ) (t ist Ausführungszeit), so
wird die Konfiguration C1 gewählt.
Im folgenden werden die einzelnen Schritte des Iterative Tuning erklärt.
10
 Column Group Restriction: Eine Reduzierung auf relevante Spaltengruppen ist
wichtig, weil die Erstellung von horizontal partitionierten Tabellen, Idexen und
materialisierten Sichten selbst als Performancekritisch anzusehen ist. Durch die
Reduzierung werden ausschließlich die Spalten gewählt, welche für den Workload
relevant sind.
 Candidate Selection: A
u
s
d
e
r
M
e
n
g
e
d
e
r
„
i
n
t
e
r
e
s
s
a
n
t
e
n
“
S
p
a
l
t
e
n
d
e
s
V
o
r
s
c
h
r
i
t
t
e
s
werden nun Kandidaten anhand des beschriebenen Kostenmodells gewählt. In
diesem Schritt simuliert der DTA also zusammen mit dem Query Optimizer
verschiedene Konfigurationen und wählt die Kandidaten, also diejenigen, die in
einer bestimmten Zeit liegen aus.
 Merging: Die bisher gewählten Kandidaten beruhen auf jeweils einer Query aus
dem Workload. Nun werden diese Kandidaten zusammen geführt, sodass sie für die
gesamten Eingabedaten eine optimale Konfiguration ergeben (wobei nicht
ausgeschlossen wird, dass es mehrere sehr gute Konfigurationen gibt).
 Enumeration: Der letzte Schritt zählt alle Kandidaten in einer Liste auf. Sowohl
diejenigen aus dem Candidate Selection-Schritt als auch aus dem Merging-Schritt.
Trotzdem bleibt nun die Frage nach der Performance. Die ganzen Kostenberechnungen und
Simulationen benötigen ebenfalls Zeit und beanspruchen den Datenbankserver durch die
Zusammenarbeit mit dem Query Optimizer. Um diesem Problem aus dem Weg zu gehen
können die Daten auf einen zweiten Server überspielt werden auf welchem dann der DTA
arbeitet. Das kopieren der gesamten Datenbank ist jedoch selbst sehr Performancekritisch.
Vor allem wenn diese sehr groß4 ist.
Production Server
Test Server
Import metadata
and statistics
Create statistics
Perform Tuning
DTA
DTA recommendations
Abbildung 7: Verbesserung der Skalierbarkeit durch Verwendung eines Testservers
4
Unter http://www.wintercorp.com/vldb/2003_TopTen_Survey/TopTenWinners.asp kann die Liste der größten
Datenbanken angezeigt werden
11
Zur besseren Skalierbarkeit bietet der SQL Server eine weitere Möglichkeit. Anstatt alle
Daten zu nehmen, werden ausschließlich Metadaten kopiert. Dazu gehören zum Beispiel das
Datenbankschema, Trigger und Stored Procedures, aber auch Statistiken. Diese
Informationen reichen aus, um auf dem Testserver die Konfigurationen zu testen. Dadurch
wird der Produktionsserver entlastet und der DTA kann arbeiten ohne die Performance stark
zu beeinflussen. Abbildung 7 gibt einen Überblick über die Skalierung durch Verwendung
eines Produktions- und eines Testservers mit der beschriebenen Methode. Zur besseren
Kompatibilität ist es ebenfalls möglich Hardware des Produktionsservers zu simulieren.
4 Statistiken und Performancemessungen
Erwartete Verbesserung
für den Workload
Gegenüber dem aus den Vorgängerversionen bekannte ITW liefert der DTA qualitativ höhere
Erwartungswerte für einen Performanceanstieg. Abbildung 8 zeigt den Vergleich beider
Werkzeuge und deren erwarte Verbesserung für den Workload. Als Benchmarks wurden im
einzelnen (1) TCPH225, die ersten 22 Querys des TPC-H Benchmarks, (2) PSOFT, eine
Customerdatenbank mit ungefähr 6000 inserts, deletes und updates, und (3) SYNT1, eine
synthetische Datenbank, welche mit dem SetQuery Benchmarkschema übereinstimmt. Bei
allen liegt der DTA erkennbar vor dem ITW.
100%
95%
90%
85%
80%
75%
TPCH22
PSOFT
SYNT1
Workload
DTA Quality
SS2K ITW Quality
Abbildung 8: Erwartete prozentuale Verbesserung des DTA im Vergleich zum ITW
Abbildung 9 zeigt die Einsparung der Laufzeit bei den Benchmarks des DTA gegenüber dem
ITW. Auch hier ist zu erkennen, dass der DTA teilweise sehr deutlich vorne liegt, das heißt,
dass die physischen Designentscheidungen performanter sind.
5
http://www.tpc.org/tpch/
12
Reduction in running time
100%
80%
60%
40%
20%
0%
TPCH22
PSOFT
SYNT1
Workload
Reduction in running time
Abbildung 9: Verbesserung der Laufzeit durch Tuning mit dem DTA gegenüber dem ITW
5 Fazit
Auch Microsoft beschäftigt sich mit dem Thema Autonomic Computing. Es gibt bereits
einige Implementierungen die bereits seit Version 7.0 implementiert sind und bis zur
aktuellen Version erweitert und verbessert wurden. Die Forschungen beschränken sich vor
allem auf das physische Datenbankdesign. Das dazugehörige Vorzweigewerkzeug ist der
DTA, welcher mit Version 2005 eingeführt wurde. Aufgrund der positiven
Benchmarkergebnisse wird in dieser Richtung wohl auch in Zukunft weiter geforscht.
Literaturverzeichnis
[AC99]
Aboulnaga, A. and Chaudhuri, S., Self-Tuning Histograms: Building Histograms Without
Looking at Data. Proceedings of ACM SIGMOD, Philadelphia, 1999.
[ACN99] Agrawal S., Chaudhuri S., Kollar L., and Narasayya V. Index Tuning Wizard for Microsoft
SQL Server 2000.
[AC04] Agrawal S., Chaudhuri S., Kollar L., Marathe A., Narasayya V., and Syamala M., Database
Tuning Advisor for Microsoft SQL Server 2005. Proceedings of the 30th International
Conference on Very Large Databases (VLDB04), Toronto, Canada, 2004.
[BC07] Bruno N. and Chaudhuri S. , An Online Approach to Physical Design Tuning. Proceedings of
the 2007 ICDE Conference.
[CC99] Surajit Chaudhuri, Eric Christensen, Goetz Graefe, Vivek Narasayya, and Michael Zwilling,
Self Tuning Technology in Microsoft SQL Server. Data Engineering Vol. 22 No. 2, 1999
[CN98] Chaudhuri, S. and Narasayya V., AutoAdmin "What-If" Index Analysis Utility. Proceedings
of ACM SIGMOD, Seattle, 1998.
13
Herunterladen