1. V$LIBRARYCACHE
Vyn V$LIBRARYCACHE samlar statistik om hur Library Cache används. Den mest intressanta raden i denna vy är "SQL AREA" som samlar statistik för samtliga SQL-satser i systemet. Vyn har följande kolumner:
SQL> DESC v$librarycache
Name Null? Type
----------------------------------------- -------- ----------------------------
NAMESPACE VARCHAR2(15)
GETS NUMBER
GETHITS NUMBER
GETHITRATIO NUMBER
PINS NUMBER
PINHITS NUMBER
PINHITRATIO NUMBER
RELOADS NUMBER
INVALIDATIONS NUMBER
DLM_LOCK_REQUESTS NUMBER
DLM_PIN_REQUESTS NUMBER
DLM_PIN_RELEASES NUMBER
DLM_INVALIDATION_REQUESTS NUMBER
DLM_INVALIDATIONS NUMBER
|
Kolumnerna har följande innebörd:
- GETS Hur många sökningar vi haft i cachen sedan startup. För SQL AREA är detta antal sökningar efter exekveringsplaner för SQL-satser sedan startup.
- GETHITS Hur många träffar vi haft i cachen sedan startup. För SQL AREA är detta antal exekveringsplaner som har hittats i cachen sedan startup.
- GETHITRATIO Kvoten mellan träffar och antal sökningar. Vårt mål är att få en hög GETHITRATIO.
- RELOADS Hur många gånger vi fått en miss i sökningen på grund av (A) objektet har åkt ur cachen för att den inte fick plats, eller (B) objektet har åkt ut eftersom det har förändrats (invalidiserats).
- INVALIDATIONS Hur många objekt som har invalidiserats sedan startup.
- PINS Hur många läsningar eller exekveringar i cachen sedan startup.
- PINHITS Hur många träffar på läsningar eller exekveringar i cachen sedan startup.
2. Exempel
Vi kollar på statistiken som finns för mitt system. Instansen har just startats och vi har bara haft några minuters aktivitet:
SQL> SELECT namespace, gets, gethits, reloads, gethitratio, invalidations, pins, pinhits, pinhitratio
FROM v$librarycache;
NAMESPACE GETS GETHITS RELOADS GETHITRATIO INVALIDATIONS PINS PINHITS PINHITRATIO
--------------- ---------- ---------- ---------- ----------- ------------- ---------- ---------- -----------
SQL AREA 5443 2961 917 ,54400147 90 48099 44716 ,929665897
TABLE/PROCEDURE 7249 4795 871 ,661470548 0 14786 10014 ,677262275
BODY 810 768 53 ,948148148 0 1282 1185 ,924336973
TRIGGER 183 162 13 ,885245902 0 436 402 ,922018349
INDEX 110 26 19 ,236363636 0 280 177 ,632142857
CLUSTER 185 176 5 ,951351351 0 492 478 ,971544715
OBJECT 0 0 0 1 0 0 0 1
PIPE 0 0 0 1 0 0 0 1
JAVA SOURCE 0 0 0 1 0 0 0 1
JAVA RESOURCE 0 0 0 1 0 0 0 1
JAVA DATA 0 0 0 1 0 0 0 1
11 rows selected.
|
Jag nu kör nu en SQL-sats som jag vet inte har körts efter instansens startup:
SQL> SELECT * FROM scott.dept WHERE deptno=10;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
|
Vi tittar nu på statistiken igen för att se om det blev någon förändring:
SQL> SELECT namespace, gets, gethits, reloads, gethitratio, invalidations, pins, pinhits, pinhitsratio
FROM v$librarycache;
NAMESPACE GETS GETHITS RELOADS GETHITRATIO INVALIDATIONS PINS PINHITS PINHITRATIO
--------------- ---------- ---------- ---------- ----------- ------------- ---------- ---------- -----------
SQL AREA 5444 2961 917 ,543901543 90 48130 44745 ,929669645
TABLE/PROCEDURE 7249 4795 873 ,661470548 0 14789 10015 ,677192508
BODY 810 768 53 ,948148148 0 1282 1185 ,924336973
TRIGGER 183 162 13 ,885245902 0 436 402 ,922018349
INDEX 110 26 19 ,236363636 0 280 177 ,632142857
CLUSTER 185 176 5 ,951351351 0 492 478 ,971544715
OBJECT 0 0 0 1 0 0 0 1
PIPE 0 0 0 1 0 0 0 1
JAVA SOURCE 0 0 0 1 0 0 0 1
JAVA RESOURCE 0 0 0 1 0 0 0 1
JAVA DATA 0 0 0 1 0 0 0 1
11 rows selected.
|
Vi ser att vi har fått följande förändring:
- SQL AREA: GETS: har ökat med 1, vilket betyder att en SQL-sats har körts.
- SQL AREA: GETHITS: är oförändrad, vilket betyder att SQL-satsens exekveringsplan inte hittades i cachen.
- SQL AREA: GETHITRATIO: har blivit något sämre (från 0.5440 till 0.5439), eftersom vi har fått en ny miss i cachen.