-
Requete dans shared pool
Bonjour,
Aujourd'hui je suis confronté a un problème de performance d'une requete passée sous forme de vue.
En effet ça première execution prend beaucoup de temps (17sec) alors que la deuxième prend environ 2 sec.
Mon sentiment est que oracle va taper dans son shared pool (à moins que ce soit le Database Buffer Cache) le deuxième passage ce qui permet d'accélerer le traitement.
Pour résoudre mon problème j'ai tenté de mettre une materialized view mais la mise a jour en mode fast ne peut se faire sur une requete complexe. Ce qui est dommage car ma recherche fonctionne tres bien mais le refresh on commit est une cata.:?
Ma question est donc la suivante:
Est ce que je peux verifier dans mon shared pool (ou le Database Buffer Cache) au démarrage de mon application si ma requete y est ?
Si elle n'est pas présente alors je peux de manière artificielle la lancer sachant que je suis sur un systeme a 420 users simultannés et que je ne compte pas le faire à chaque fois.
J'ai pensé à cette solution mais peut être existe t il d'autres solutions auquel cas je suis également preneur :yaisse2:
-
faites un set autotrace on pour valider mais il est probable que ce soit le buffer cache qui est en jeu
ce que vous pouvez faire, c'est affecter un pool mémoire (recycle ou keep, ils sont exactement identiques) aux tables sous-jacentes à cette vue
comme ça, les données resteront [quasiment] toujours dans ce buffer
si vous êtes exigeants, vous pouvez également "pinner" ces tables pour les charger en buffer dès le démarrage de l'instance.
http://download.oracle.com/docs/cd/B....htm#sthref540