Est-il vrai que le fait d'avoir beaucoup de buffer consomme énormément de processeur?
Si oui, quel moyen peut-on utilisé pour réduire la quantité de buffer lu?
Est-il vrai que le fait d'avoir beaucoup de buffer consomme énormément de processeur?
Si oui, quel moyen peut-on utilisé pour réduire la quantité de buffer lu?
Bonjour,
De quels buffers parles tu ? Buffer cache, buffer log,...
D'ou vient cette "rumeur" , et au final quel est ton problème ?
Laurent
J'imagine que tu parles du cache buffer définit par DB_CACHE_SIZE.
Oracle trouvant plus souvent les blocks qu'il a besoin dans le cache, ira moins souvent sur le disque et il y aura moins d'attentes liées aux lectures physiques, et donc le CPU sera sollicité plus vite pour ces opérations.
Conclusion :
- Pour une requête, la conso CPU sera la même, avec moins d'ELAPSE.
- Oracle pourra absorber plus de requête en même temps. Les pointes en conso CPU "peuvent" être importantes.
Il s'agit du buffer Gets, en faite, c'est l'analyse fournit par un DBA auquel je dois proposé une solution.
D'après le site qui suit :
http://stackoverflow.com/questions/2...ually-refer-to
Le buffer Gets représente le nombre de fois où ORACLE doit accéder à un bloc durnat l'exécution d'un script.
En gros par rapport à ma question du début, s'agissant d'un accès I/O physique, c'est toujours coûteuse par rapport à un accès en mémoire.
Bonjour,
Un buffer get va effectivement consommer de la CPU de par sa nature. Mais avec les architectures matérielles aujourd'hui ce n'est pas vraiment problématique et certainement moins impactant qu'un IO disque... Mieux vaut consommer de la CPU à lire en mémoire que d'aller chercher ses données sur disques (qui d'ailleurs consommeront également de la CPU pour la gestion du cache du file system s'il n'est pas désactivé).
Maintenant il est possible que 1- le serveur soit sous-dimensionné 2- le code soit mal écrit
Si je regarde ton lien, on voit 140 000 gets pour 31000 executions ce qui ne fait plus que 4000 gets / executions.
Ensuite cela dépend du nombre de ligne renvoyées. Vue que la requete est simple si par exemple une seule ligne est renvoyé, la probalité d'un index manquant ou des stats non à jour est à creuser. En revanche si ca ramene 10000 lignes il n'y a pas grand chose à faire (à part coté fonctionnel).
En tout état de cause, un accès disque coute plus chèr qu'un accès mémoire.
Laurent
Partager