sql >> Databáze >  >> RDS >> Oracle

Jak porozumět statistikám trasovacího souboru v Oracle. Jako CPU, uplynulý čas, dotaz...atd

Nejmenší jednotkou přístupu k datům v databázi Oracle je blok. Ani řada.

Každý blok může uložit mnoho řádků.

Databáze může přistupovat k bloku v aktuálním nebo konzistentním režimu.

  • Aktuální =protože blok existuje „právě teď“.
  • Konzistentní =protože blokované položky existovaly v době zahájení dotazu.

Dotaz a aktuální sloupce udávají, kolikrát databáze přistoupila k bloku v konzistentním (dotazu) a aktuálním režimu.

Při přístupu k bloku může být již ve vyrovnávací paměti (paměti). Pokud ano, není potřeba žádný přístup k disku. Pokud ne, musí provést fyzické čtení (pr). Sloupec disku je počet celkových fyzických čtení.

Statistiky pro každý řádek v plánu jsou čísla pro danou operaci. Plus součet všech jeho podřízených operací.

Jednoduše řečeno, databáze zpracuje plán tak, že nejprve přistoupí k prvnímu dítěti. Poté předá řádky nadřazenému. Pak všechny ostatní podřízené operace tohoto rodiče v pořadí. Podřízené operace jsou na displeji odsazeny od jejich nadřazeného prvku.

Databáze tedy zpracovala váš dotaz takto:

  1. Přečtěte si 2 000 řádků od ZÁKAZNÍKA. To vyžadovalo 749 konzistentních získání bloku a 363 čtení disku (hodnoty cr a pr na tomto řádku). To trvalo 10 100 mikrosekund.
  2. Přečtěte si 112 458 řádků z REZERVACE. To provedlo 8 203 konzistentních čtení a nula čtení disku. To trvalo 337 595 mikrosekund
  3. Spojili tyto dvě tabulky dohromady pomocí hašovacího spojení. Hodnoty CR, PR, PW (fyzické zápisy) a časové hodnoty jsou součtem operací pod tímto. Navíc bez ohledu na práci, kterou tato operace udělala. Takže hash join:
    • did 8 952 - ( 749 + 8 203 ) =nula konzistentních čtení
    • did 363 - ( 363 + 0 ) =nula fyzických čtení
    • provedení trvalo 1 363 447 - ( 10 100 + 337 595 ) =1 015 752 mikrosekund

Všimli jste si, že součty CR a PR pro spojení hash odpovídají součtům dotazu a disku v řádku načtení?

Sloupec počet uvádí, kolikrát k dané operaci došlo. Načtení je volání databáze za účelem získání řádků. Klient tedy zavolal databázi 7 499krát. Při každém obdržení ceil( 112 458 / 7 499 ) =15 řádků.

CPU je celkový čas v sekundách, kdy procesory serveru prováděly tento krok. Uplynulý je celkový čas nástěnných hodin. To je čas CPU + případná práce navíc. Například čtení disku, čas sítě atd.




  1. Podmíněný příkaz JOIN SQL Server

  2. Způsobeno:java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver

  3. Jak najít chybu způsobující ora-06575?

  4. Mzdový datový model