Oracle
 sql >> Datenbank >  >> RDS >> Oracle

So verstehen Sie die Statistiken der Ablaufverfolgungsdatei in Oracle. Wie CPU, verstrichene Zeit, Abfrage ... etc

Die kleinste Datenzugriffseinheit in Oracle Database ist ein Block. Nicht eine Reihe.

Jeder Block kann viele Zeilen speichern.

Die Datenbank kann im aktuellen oder konsistenten Modus auf einen Block zugreifen.

  • Aktuell =da der Block "gerade jetzt" existiert.
  • Konsistent =wie die Blockierung zum Zeitpunkt des Beginns Ihrer Abfrage existierte.

Die Abfrage- und aktuellen Spalten geben an, wie oft die Datenbank auf einen Block im konsistenten (Abfrage-) und im aktuellen Modus zugegriffen hat.

Wenn auf einen Block zugegriffen wird, kann dieser bereits im Buffer-Cache (Speicher) sein. In diesem Fall ist kein Festplattenzugriff erforderlich. Wenn nicht, muss es einen physischen Lesevorgang (pr) durchführen. Die Disk-Spalte ist eine Zählung der gesamten physischen Lesevorgänge.

Die Statistiken für jede Linie im Plan sind die Zahlen für diese Operation. Plus die Summe aller untergeordneten Operationen.

Einfach ausgedrückt verarbeitet die Datenbank den Plan, indem sie zuerst auf das erste Kind zugreift. Übergibt dann die Zeilen an das übergeordnete Element. Dann alle anderen untergeordneten Operationen dieses übergeordneten Elements der Reihe nach. Untergeordnete Operationen werden in der Anzeige von ihren Eltern eingerückt.

Die Datenbank hat Ihre Abfrage also folgendermaßen verarbeitet:

  1. Lesen Sie 2.000 Zeilen von CUSTOMER. Dies erforderte 749 konsistente Blockabrufe und 363 Festplattenlesevorgänge (cr- und pr-Werte in dieser Zeile). Dies dauerte 10.100 Mikrosekunden.
  2. Lesen Sie 112.458 Zeilen aus BOOKING. Dies führte zu 8.203 konsistenten Lesevorgängen und null Festplattenlesevorgängen. Dies dauerte 337.595 Mikrosekunden
  3. Verknüpfte diese beiden Tabellen mit einem Hash-Join. Die CR-, PR-, PW- (physical writes) und Zeitwerte sind die Summe der Operationen darunter. Plus die Arbeit, die diese Operation geleistet hat. Also der Hash-Join:
    • hat 8.952 - ( 749 + 8.203 ) =null konsistente Lesevorgänge durchgeführt
    • tat 363 - ( 363 + 0 ) =null physische Lesevorgänge
    • dauerte 1.363.447 - ( 10.100 + 337.595 ) =1.015.752 Mikrosekunden für die Ausführung

Beachten Sie, dass die CR- und PR-Gesamtsummen für den Hash-Join mit den Abfrage- und Festplattengesamtsummen in der Abrufzeile übereinstimmen?

Die Spalte „count“ gibt an, wie oft dieser Vorgang stattgefunden hat. Ein Abruf ist ein Aufruf an die Datenbank, um Zeilen abzurufen. Der Client hat die Datenbank also 7.499 Mal aufgerufen. Jedes Mal, wenn ceil( 112.458 / 7.499 ) =15 Zeilen empfangen wurden.

CPU ist die Gesamtzeit in Sekunden, in der die Prozessoren des Servers diesen Schritt ausgeführt haben. Abgelaufen ist die Gesamtzeit der Wanduhr. Dies ist die CPU-Zeit + zusätzliche Arbeit. Wie Festplattenlesevorgänge, Netzwerkzeit usw.