sql >> Database >  >> RDS >> Oracle

Hoe statistieken van traceerbestanden in Oracle te begrijpen. Zoals CPU, verstreken tijd, query... etc

De kleinste eenheid van gegevenstoegang in Oracle Database is een blok. Geen rij.

Elk blok kan veel rijen opslaan.

De database heeft toegang tot een blok in de huidige of consistente modus.

  • Huidige =aangezien het blok "op dit moment" bestaat.
  • Consistent =zoals de blokkering bestond op het moment dat uw zoekopdracht begon.

De query- en huidige kolommen rapporteren hoe vaak de database een blok heeft benaderd in consistente (query) en huidige modus.

Bij het benaderen van een blok kan het zich al in de buffercache (geheugen) bevinden. Als dat het geval is, is er geen schijftoegang nodig. Zo niet, dan moet het een fysieke uitlezing (pr) doen. De schijfkolom is een telling van de totale fysieke leesbewerkingen.

De statistieken voor elke regel in het plan zijn de cijfers voor die operatie. Plus de som van alle onderliggende operaties.

In eenvoudige bewoordingen verwerkt de database het plan door eerst toegang te krijgen tot het eerste kind. Vervolgens worden de rijen doorgegeven aan de ouder. Dan alle andere kind-ops van die ouder in volgorde. Onderliggende bewerkingen worden ingesprongen vanaf hun bovenliggende in het scherm.

Dus de database verwerkte uw zoekopdracht als volgt:

  1. Lees 2000 rijen van KLANT. Dit vereiste 749 consistente block-gets en 363 disk reads (cr- en pr-waarden op deze rij). Dit duurde 10.100 microseconden.
  2. Lees 112.458 rijen van BOOKING. Dit deed 8203 consistente reads en nul disk reads. Dit duurde 337.595 microseconden
  3. Deze twee tabellen samengevoegd met behulp van een hash-join. De CR, PR, PW (physical writes) en tijdwaarden zijn de som van de bewerkingen daaronder. Plus wat voor werk deze operatie ook heeft gedaan. Dus de hash join:
    • deed 8.952 - ( 749 + 8.203 ) =nul consistente uitlezingen
    • deed 363 - ( 363 + 0 ) =nul fysieke uitlezingen
    • duurde 1.363.447 - ( 10.100 + 337.595 ) =1.015.752 microseconden om uit te voeren

Merk je op dat de CR- en PR-totalen voor de hash-join overeenkomen met de query- en schijftotalen in de ophaalregel?

De kolom Telling geeft het aantal keren weer dat de bewerking is uitgevoerd. Een fetch is een aanroep naar de database om rijen op te halen. Dus de klant heeft de database 7.499 keer gebeld. Elke keer dat het ceil ( 112.458 / 7.499 ) =15 rijen ontving.

CPU is de totale tijd in seconden dat de processors van de server die stap uitvoerden. Verstreken is de totale tijd van de wandklok. Dit is de CPU-tijd + eventueel extra werk. Zoals schijflezen, netwerktijd, enz.




  1. Verwijder geselecteerde items met modale bevestiging PHP

  2. Hoe kopieer ik een json-bestand naar postgres?

  3. MySQL-probleem met geaggregeerde functie

  4. Alle uitgeschakelde CHECK-beperkingen in SQL Server retourneren (T-SQL-voorbeeld)