Lecture de la fragmentation de la shared pool
Bonjour,
Les risque d'une fragmentation de la shared pool en terme de performance est une contention sur les latch. Cette fragmentation est généralement du à des requêtes "littérales" et/ou peu d'utilisation de traitements stockés, et/ou une mémoire sous dimensionnée.
Pourriez-vous m'aider quant à la compréhension de la requete suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
select
decode(
sign(ksmchsiz - 812),
-1, (ksmchsiz - 16) / 4,
decode(
sign(ksmchsiz - 4012),
-1, trunc((ksmchsiz + 11924) / 64),
decode(
sign(ksmchsiz - 65548),
-1, trunc(1/log(ksmchsiz - 11, 2)) + 238,
254
)
)
) bucket,
sum(ksmchsiz) free_space,
count(*) free_chunks,
trunc(avg(ksmchsiz)) average_size,
max(ksmchsiz) biggest
from
sys.x_$ksmsp
where
inst_id = userenv('Instance') and
ksmchcls = 'free'
group by
decode(
sign(ksmchsiz - 812),
-1, (ksmchsiz - 16) / 4,
decode(
sign(ksmchsiz - 4012),
-1, trunc((ksmchsiz + 11924) / 64),
decode(
sign(ksmchsiz - 65548),
-1, trunc(1/log(ksmchsiz - 11, 2)) + 238,
254
)
)
) |
View sample listing
Citation:
BUCKET FREE_SPACE FREE_CHUNKS AVERAGE_SIZE BIGGEST
---------- ---------- ----------- ------------ ----------
0 166344 3872 42 72
1 32208 374 86 96
4 928 1 928 928
6 11784 4 2946 3328
D'après moi :
BUCKET --> paquet représentant la requête traitée
free_space --> total des fragments libres (ksmchsiz)
free_chunks --> la fragmentation ???
average_size --> taille moyenne des fragments libres
biggest --> plug gros fragment libre
La requete identifiée par le bucket 0 souffre d'une grosse fragmentation...
Qu'est que cela signifie au niveau de la shared pool ?
D'autre part cette analyse se situe a quel niveau dans le cycle d'exécution d'une requête SQl (parse - execute - fetch)
Merci de votre aide
http://www.ixora.com.au/scripts/pool...ool_free_lists
src : shared_pool_free_lists.sql