Mit diesem kurzen Beitrag möchte ich ein MissverstĂ€ndnis bezĂŒglich der Analyse von AWR-Datenbanken, die auf Oracle Exadata basieren, ausrĂ€umen. Seit fast 10 Jahren sehe ich mich stĂ€ndig mit der Frage konfrontiert: Wie trĂ€gt die Exadata-Software zur Leistung bei? Oder um es mit neu geschaffenen Wörtern auszudrĂŒcken: Wie sehr âexadatetâ die Arbeit jener oder jener Datenbank?

Auf diese berechtigte Frage wird, meiner Meinung nach, oft eine falsche Antwort gegeben, die sich auf AWR-Statistiken stĂŒtzt. Diese prĂ€sentieren ein Verfahren fĂŒr systemische Wartezeiten, das die Antwortzeit als Summe der CPU-Zeit der Datenbank (DB CPU) und der Wartezeiten verschiedener Klassen interpretiert.
Mit dem Erscheinen von Exadata sind spezifische systemische Wartezeiten in die AWR-Statistik aufgenommen worden, die mit der Exadata-Software in Zusammenhang stehen. In der Regel beginnen die Bezeichnungen solcher Wartezeiten mit dem Wort âcellâ (ein Exadata-Speicherserver wird als Zelle bezeichnet), wobei die am hĂ€ufigsten vorkommenden Wartezeiten die sprechenden Bezeichnungen âcell smart table scanâ, âcell multiblock physical readâ und âcell single block physical readâ tragen.
In den meisten FĂ€llen ist der Anteil solcher Exadata-Wartezeiten an der Gesamtantwortzeit gering, weshalb sie nicht einmal im Abschnitt der Top 10 der Vordergrundereignisse nach Gesamtwartezeit auftauchen (in diesem Fall mĂŒssen sie im Abschnitt der Vordergrundwarteereignisse gesucht werden). Wir haben mit viel MĂŒhe bei unseren Kunden ein tĂ€gliches AWR-Beispiel gefunden, in dem die Exadata-Wartezeiten in den Abschnitt der Top 10 aufgenommen wurden und insgesamt etwa 5% ausmachten:
Ereignis
Wartezeiten
Gesamte Wartezeit (Sek.)
Durchschnittliche Wartezeit
% DB-Zeit
Warteklasse
DB CPU
115.2K
70.4
SQL*Net mehr Daten von DB-Link
670,196
5471.5
8.16ms
3.3
Netzwerk
cell single block physical read
5,661,452
3827.6
676.07us
2.3
Benutzer I/O
Synchron ASM-Neuverteilung
4,350,012
3481.3
800.30us
2.1
Sonstige
cell multiblock physical read
759,885
2252
2.96ms
1.4
Benutzer I/O
direkt Pfadlesen
374,368
1811.3
4.84ms
1.1
Benutzer I/O
SQL*Net Nachricht von DB-Link
7,983
1725
216.08ms
1.1
Netzwerk
cell smart table scan
1,007,520
1260.7
1.25ms
0.8
Benutzer I/O
direkt Pfadlesen temporÀr
520,211
808.4
1.55ms
0.5
Benutzer I/O
enq: TM â Konflikt
652
795.8
1220.55ms
0.5
Anwendung
Aus solchen AWR-Statistiken werden oft folgende Schlussfolgerungen gezogen:
1. Der Beitrag der Magie von Exadata zur Datenbankleistung ist nicht hoch â er ĂŒbersteigt 5 % nicht, und die Datenbank âexadatetâ schlecht.
2. Wenn eine solche Datenbank von Exadata auf eine klassische Architektur âServer + Arrayâ migriert wird, wird sich die Leistung nicht stark Ă€ndern. Denn selbst wenn sich dieses Array als dreimal langsamer erweist als das Exadata-Speichersystem (was fĂŒr moderne All-Flash-Arrays kaum möglich ist), erhalten wir durch Multiplikation von 5 % mit drei einen Anstieg des Anteils an E/A-Wartezeiten auf 15 % â so eine Datenbank wird das mit Sicherheit ĂŒberstehen!
Beide diese Schlussfolgerungen sind ungenau; mehr noch, sie verzerren das VerstĂ€ndnis der Idee, die in Exadata Software steckt. Exadata bietet nicht nur schnellen Input/Output, sie funktioniert grundlegend anders als die klassische Architektur âServer + Arrayâ. Wenn die Datenbank tatsĂ€chlich âexadatetâ, wird die SQL-Logik auf das Speichersystem ĂŒbertragen. Storage Server findet dank einer Reihe spezieller Mechanismen (insbesondere den Exadata Storage Indexes, aber nicht nur) selbststĂ€ndig die benötigten Daten und ĂŒbertrĂ€gt sie an die DB-Server. Sie tun dies ziemlich effizient, weshalb der Anteil typischer Exadata-Wartezeiten an der Gesamtreaktionszeit gering ist.Â
Wie wird sich dieser Anteil auĂerhalb von Exadata verĂ€ndern? Wie wird sich das auf die Gesamtleistung der Datenbank auswirken? Am besten können diese Fragen durch Tests beantwortet werden. Beispielsweise kann das Warten auf âCell Smart Table Scanâ auĂerhalb von Exadata in einen so schweren Table Full Scan umschlagen, dass der Input/Output die gesamte Reaktionszeit in Anspruch nimmt und die Leistung dramatisch sinkt. Deshalb ist es falsch, beim Analysieren von AWR den Gesamtprozentsatz der Exadata-Wartezeiten als Beitrag ihrer Magie zur Leistung zu betrachten und insbesondere diesen Prozentsatz zur Prognose der Leistung auĂerhalb von Exadata zu verwenden. Um zu verstehen, wie stark die Arbeit der Datenbank âexadatetâ, muss man die Statistiken der AWR-Sektion âInstance Activity Statsâ (dort gibt es viele Statistiken mit sprechenden Namen) studieren und sie miteinander vergleichen.
Um herauszufinden, wie sich die Datenbank auĂerhalb von Exadata verhalten wird, ist es am besten, aus einem Backup einen Klon der Datenbank auf der Zielarchitektur zu erstellen und die Leistung dieses Klons unter Belastung zu analysieren. Diese Möglichkeit haben normalerweise die Besitzer von Exadata.
Autor: Alexey Struchenko, Leiter der Datenbankabteilung âInfostat Jetâ
Quelle: habr.com
