optimisation de statistique

optimisation de statistique - SQL/NoSQL - Programmation

Marsh Posté le 08-03-2007 à 19:07:24    

Bonjour,
dans le cadre d'un datawarehouse nous avons quelques tables de plus de 50 millions de records, qui ont +/- 25 foreign key vers des tables de dimension.
la recolte de statistiques se fait avec dbms_gather_stats, cascade, true et la on commence a avoisiner les 1h pour generer les statistiques pour une table.
 
la db est en oracle 9.2
 
je debarque la dedans et pour le moment je ne m'etais pas interessé aux stats mais la le gather stats complet met une petite dizaine d'heure et fout le server sur les rotules, avez vous des techniques particulieres pour optimiser le traitements ou eds recommandations de base?
 
 
d'avance merci pour vos réponses

Reply

Marsh Posté le 08-03-2007 à 19:07:24   

Reply

Marsh Posté le 09-03-2007 à 08:04:58    

alors plusieurs choses :
- à quelle fréquence les stats sont calculés ? si c'est tous les soirs, effectivement c'est emmerdant
- de quelle manière ? si c'est pour toutes les tables d'un schéma d'un coup, c'est également emmerdant
 
quelques idées malgré le peu d'infos qu'on a :
- calculer uniquement les stats des tables qui ont eu beaucoup de mouvement, par exemple l'option "gather stale" permet de calculer uniquement les tables qui ont eues plus de 10% de modifications
- tu peux jouer avec la taille d'échantillonage
- un truc fou si tu as l'environnement qu'il faut : tu calcules les stats sur une autre machine qui possèdent les mêmes données, tu exportes tes stats et tu les importes en prod
Je sais c'est foireux, mais j'aime bien les trucs foireux

Reply

Marsh Posté le 09-03-2007 à 09:50:51    

1) dans le cadre de la facturation c'est mensuel. en soit ca ne semble pas très génant mais j'ai tout mon etl+stats+générer les cubes et le total me porte a + de 24 heures et évidemment on a tendance a pousser au cul pour savoir quand ce sera fini etc...
 
2) au niveau des mouvements je rajoute mensuellement 500000 records sur ma table de 50millions. pour le moment je préfere avoir les stats le plus au top possible vu que cela doit tourner au quart de tour tout le reste du mois.
 
qu'en penses tu?

Reply

Marsh Posté le 09-03-2007 à 10:14:24    

1) facturation mensuelle => calcul de stats des tables impactées, pas besoin de faire une récolte complète
dans les grosses bases, pour chaque table, on sait quand est ce que c'est pertinent et peu impactant pour lancer une récolte de stats
 
2) réduis l'échantillonage, tu as une option dans oracle 9i (auto_sample de mémoire) pour qu'il décide de lui-même l'échantillonage

Reply

Marsh Posté le 09-03-2007 à 14:20:52    

attention, selon la version l'auto_sample n'est pas forcément conseillé (pas avant la 9.2.0.6 de mémoire)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed