|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() |
Bonjour tout le monde !
J'ai un problème avec la performance de ma base de données ( sous Oracle 9i). J'ai fait un calcul du hit ratio qui varie en fonction du temps. D'un moment à l'autre ça bascule de 95% à 70%. Or la bonne donnée doit être > 80% . Des valeurs de paramètres pour information : db_block_size = 8M db_cache_size = 464 M Pour toute autre information susceptible d'aider pour m'aider je suis en veille . Merci |
|
|
00
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
Citation:
Rien ne dit qu'un ratio de 70% est mauvais Mais c'est vrai qu'un cache de 464M, c'est bien pour gérer ta collection de timbre, non? PS: cependant, il est bon d'identifier les commandes sql qui avaient généré plus d'accès disque et de comprendre pourquoi avant d'agrandir le cache. |
|
|
00
|
|
|
#3 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
que donne le top 5 des events de la base... t'aurais pas du scattered read à gogo par hasard ?
|
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Inscription : mai 2007 Messages : 113 ![]() |
Regarde si tu n'aurais pas des select count(*) ou select * dans les top10 et tu auras surement ton explication.
|
|
|
00
|
|
|
#5 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
|
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() Inscription : mai 2007 Messages : 113 ![]() |
Je n'ai pas d'explication, c'est mon expérience qui parle, j'ai remarqué que des select * et select count(*) font des scans de tables complètes, là c'est normal et je suppose qu'Oracle n'utilise pas la même méthode à chaque fois, de plus il monte la table en mémoire, (ou le contenu du select *) et cela hache les Hit des Buffer Cache et Lib cache
|
|
|
00
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
c'est vrai que si tu fais beaucoup de select * from t sans condition, alors les données seront directement lues sur le disques, car les full-table-scans ne sont généralement pas en cache. Cela ne veut pas encore dire qu'il y a un problème...
|
|
00
|
|
|
#8 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
en effet et c'est pas le SELECT qui pose problème dans ces cas mais le WHERE et les indexes
|
|
|
00
|
|
|
#9 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
Un SELECT * FROM T est peut-être exactement ce que l'utilisateur désire. Si je veux la liste de tous mes clients, alors je fais un SELECT * FROM CLIENT, ce n'est pas un "problème".
Il faut d'abord identifier la ou les requêtes qui générent beaucoup d'accès disque, et ensuite seulement on peut se poser la question de savoir si c'est bien ou mal |
|
00
|
|
|
#10 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
oui mais dans ce cas tu peux keeper la table parce qu'il y a des chances que tu sois pas le seul à vouloir le faire
Et là on parle de régler les "problèmes" de cache, donc si l'appli fait que du FTS y'a pas de solution ce que je voulais dire, c'est que c'est pas les SELECT * ou SELECT count(*) qu'il faut chercher mais les FULL SCAN grace à statspack |
|
|
00
|
|
|
#11 |
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
Les problèmes de cache ou le cache hit ratio qui fluctue ?
Peut-être que le ratio descent la nuit lorsque certains gros batch tournent. Ce qui ne veut pas dire qu'il y a un "problème". Vouloir tuner la base en fonction des ratios n'est pas ma méthode priviligiée |
|
00
|
|
|
#12 |
![]() ![]() Inscription : janvier 2004 Messages : 15 861 ![]() |
on dit la même chose
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com