Avatar billede dakine Nybegynder
01. august 2003 - 10:39 Der er 2 kommentarer og
1 løsning

Tuning SQL areas. (Pase Calls).

Hej med jer.

Jeg er i gang med en memory tuning af en Oracle8.1.7 DB og er i den forbindelse stødt på et emne.
'Tuning Private SQL and PL/SQL Areas'.

Man kan køre en analyse-statment:
SELECT sql_text, parse_calls, executions
FROM v$sqlarea;

Hvis PARSE_CALLS ligger tæt på EXECUTIONS for en given statment bruger man kontinuerligt reparsing.
Eksempel fra udtræk:

SQL_TEXT    PARSE_CALL EXECUTIONS
------------ ---------- ----------
COMMIT              11        483

Jeg tolker det således, at kommandoen COMMIT naturligvis er eksekveret 483 gange, men den er kun blevet erstattet i RAM'en 11 gange. Hvilket jo må være godt for performance!

Hvis PASE_CALL ligger tæt op af EXECUTIONS må det betyder, at der skal bruges ressourcer på ny analyse hver gang. Og der med erstatning i RAM'en. (Skidt).
Hvis jeg er et sidespor må I rette mig. (Jeg gætter lidt).

Men hvad så når der ud for en statment står:
SQL_TEXT                            PARSE_CALL EXECUTIONS
--------------------------------    ---------- ----------
SELECT * FROM MECHANICS.reghours            26          0

Hvordan skal den tolkes? Er der nogen der kender til dette?
Avatar billede dancni Nybegynder
04. august 2003 - 15:45 #1
Problemer med antallet af parses (og manglende anvendelse af bind variable) er ikke usædvanlige og det kan give god effekt på den generelle performance at få nedsat belastningen.

Et select statement behandles normalt i følgende rækkefølge:
PARSE
EXECUTE
WHILE more rows
  FETCH
END WHILE

Statements af typen INSERT, UPDATE, DELETE behandles normalt som nedenfor:
PARSE
EXECUTE

Jeg har andrig før set et eksempel som dit select * from mechanics.reghours hvor executions ikke bliver talt op, min fornemmelse er at du enten har fundet en fejl i Oracle eller at applikationsprogrammet har en fejl hvor der aldrig udføres en execution selvom statement passes 26 gange.
Avatar billede larildsen Nybegynder
06. august 2003 - 11:45 #2
Parsning er ikke per automatik et problem, som nogle sommetider giver udtryk for. Dom dancni antyder skal et statement parses mindst een gang per connection til databasen, før det kan eksekveres. At parsningen på ofte anvendte statements så helst skal være en soft parse, der ikke genberegner eksekverings planen, men genbruger den eksekverings plan der allerede ligger i library cachen.
Der hvor parsning giver problemer er hvis der skal hard parses (dvs. beregnes eksekveringsplan) for ofte, idet hard parse taget meget længere tid end soft parse, og man holder library cache latchen under parsningen.
Hvis du vil undersøge om du har problemer med parsning, ville jeg kikke lidt på library latchen, og kikke på get/miss ratio.
For meget hard parsing opstår ofte enten ved for megen brug af litterals i statements (dvs. at statements ikke kan genbruges ret ofte) eller ved en AL for lille shared pool.

Jeg ville også begynde at kikke lidt mere overordnet på performance istedet for at dykke ned et tilfældigt sted som f. eks. parsing, idet du meget ofte kan udlede hvor tiden på systemet bliver brugt ved at kikke på event interfacet. Prøv evt. at læse Anjo Kolk's YAPP papir, det er ret interessant læsning. Du kan finde det på http://www.oraperf.com/links/get_url.php?id=54.
Du skal selvfølgelig registrere dig der. Alternativt mener jeg at det også kan findes på www.miracleas.dk et eller andet sted.
Avatar billede dancni Nybegynder
09. januar 2004 - 19:50 #3
Efter at have besvaret dit spørgsmål fandt jeg det rigtige svar på http://asktom.oracle.com.

Den formodenlige grund til at executions feltet = 0 er formodenligt at statementet er "aget" ud af sql-area. Der er normalt at Oracle rydder op efter en LRU algoritme og i dette tilfælde bliver executions feltet nulstillet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester