OVH Cloud OVH Cloud

statistiques

7 réponses
Avatar
Houdini
Y a-t-il moyen de connaitre la taille des statistiques ?
En SQL Server 7 et 2000, je sais que les statistiques sont stockées dans
sysindexes.statblob qui est de type image et qui représente un pointeur mais
je
ne vois pas comment je peux connaitre la taille que représente les
statistiques
d'une table.
Par avance, merci pour votre réponse.

7 réponses

Avatar
bruno reiter [MVP]
datalength()

br

"Houdini" wrote in message
news:
Y a-t-il moyen de connaitre la taille des statistiques ?
En SQL Server 7 et 2000, je sais que les statistiques sont stockées dans
sysindexes.statblob qui est de type image et qui représente un pointeur


mais
je
ne vois pas comment je peux connaitre la taille que représente les
statistiques
d'une table.
Par avance, merci pour votre réponse.


Avatar
Med Bouchenafa
Je suis curieux de savoir quel usage tu penses faire de cette information.
As tu investigué DBCC SHOW_STATISTICS ?


--
Bien cordialement
Med Bouchenafa

"Houdini" a écrit dans le message de
news:
Y a-t-il moyen de connaitre la taille des statistiques ?
En SQL Server 7 et 2000, je sais que les statistiques sont stockées dans
sysindexes.statblob qui est de type image et qui représente un pointeur
mais
je
ne vois pas comment je peux connaitre la taille que représente les
statistiques
d'une table.
Par avance, merci pour votre réponse.


Avatar
Houdini
Merci Bruno -> en faisant SELECT DATALENGTH(statblob) FROM sysindexes where
name='nom_stats', j'obtiens une valeur en octets. Je pense que cela
correspond à la taille des stats. C'est ca ?

Merci Med -> explication sur ma question : on a laissé l'option "create
statistiques" sur un serveur infocentre de PROD et on a beaucoup de
statistiques qui sont créées (_WA_Sys...). On a des bases assez volumineuses
(plusieurs Go chacune) et on voulait connaitre la taille des statistiques
créées afin de voir si ca représentait une taille importante ou pas (la place
libre fond comme neige au soleil avec l'évolution de l'infocentre).
J'ai lu que les statistiques ne sont pas stockées dans les pages de données
mais à un autre endroit précisé par le pointeur. Ou sont-elles stockées ?
dans quel groupe de fichiers ? (sachant qu'on a un fichier primary, data,
index)
Pour etre plus général, on se pose la question sur "utiliser ou non l'option
create statistiques" ? Y a-t-il des contraintes (places disque, temps de
création des stats, ...) ? Quel est ton avis sur le sujet ?

Par avance, merci pour vos réponses.

Je trouve cet espace d'échange très sympa et les réponses très réactives.
A+

Houdini
Avatar
Med Bouchenafa
Il y a sp_spaceused sysindexes qui peut te donner rapidement l'information
sur la taille occupée.
Concernant ta question sur quel groupe sont stockées les stats, elles le
sont par défaut sur le groupe PRIMARY. Il est possible de les deplacer sur un
groupe special avec l'option TEXTIMAGE_ON (voir Aide En Ligne).
Je ne pense pas cependant que cette option puisse s'appliquer à une table
système comme sysindexes.
Concernant ta question sur le fait de mettre ou pas l'option "auto create
statistics" sur une base de données. Comme toujours cela dépend.
Mais sur une base de production OLTP, il vaut mieux eviter et programmer un
job pour la mise à jour des statistiques par UPDATE STATISTICS dans une
fenêtre de temps qui le permettrait.
Concernant l'espace pris par ces stats, je dois avouer que je n'ai jamais
investiqué ce point mais dorénavant je ferais plus attention. Merci

Bien cordialement
Med Bouchenafa


"Houdini" a écrit :

Merci Bruno -> en faisant SELECT DATALENGTH(statblob) FROM sysindexes where
name='nom_stats', j'obtiens une valeur en octets. Je pense que cela
correspond à la taille des stats. C'est ca ?

Merci Med -> explication sur ma question : on a laissé l'option "create
statistiques" sur un serveur infocentre de PROD et on a beaucoup de
statistiques qui sont créées (_WA_Sys...). On a des bases assez volumineuses
(plusieurs Go chacune) et on voulait connaitre la taille des statistiques
créées afin de voir si ca représentait une taille importante ou pas (la place
libre fond comme neige au soleil avec l'évolution de l'infocentre).
J'ai lu que les statistiques ne sont pas stockées dans les pages de données
mais à un autre endroit précisé par le pointeur. Ou sont-elles stockées ?
dans quel groupe de fichiers ? (sachant qu'on a un fichier primary, data,
index)
Pour etre plus général, on se pose la question sur "utiliser ou non l'option
create statistiques" ? Y a-t-il des contraintes (places disque, temps de
création des stats, ...) ? Quel est ton avis sur le sujet ?

Par avance, merci pour vos réponses.

Je trouve cet espace d'échange très sympa et les réponses très réactives.
A+

Houdini


Avatar
bruno reiter [MVP]
concernant l'emplacement, la colonne étant de type image, comme (en général)
pour les autres colonnes de ce type, les infos sont stockées dans des pages
BLOBs, voir le livre de K.Delaney "inside SQL2000" qui explique parfaitement
ceci.

br

"Houdini" wrote in message
news:
Merci Bruno -> en faisant SELECT DATALENGTH(statblob) FROM sysindexes


where
name='nom_stats', j'obtiens une valeur en octets. Je pense que cela
correspond à la taille des stats. C'est ca ?

Merci Med -> explication sur ma question : on a laissé l'option "create
statistiques" sur un serveur infocentre de PROD et on a beaucoup de
statistiques qui sont créées (_WA_Sys...). On a des bases assez


volumineuses
(plusieurs Go chacune) et on voulait connaitre la taille des statistiques
créées afin de voir si ca représentait une taille importante ou pas (la


place
libre fond comme neige au soleil avec l'évolution de l'infocentre).
J'ai lu que les statistiques ne sont pas stockées dans les pages de


données
mais à un autre endroit précisé par le pointeur. Ou sont-elles stockées ?
dans quel groupe de fichiers ? (sachant qu'on a un fichier primary, data,
index)
Pour etre plus général, on se pose la question sur "utiliser ou non


l'option
create statistiques" ? Y a-t-il des contraintes (places disque, temps de
création des stats, ...) ? Quel est ton avis sur le sujet ?

Par avance, merci pour vos réponses.

Je trouve cet espace d'échange très sympa et les réponses très réactives.
A+

Houdini


Avatar
Houdini
Je configurerais donc bien mes serveurs SQL Server de la facon suivante :
pour les serveurs OLTP, je décocherais les options "auto create stats" et
"auto update stats" et je programmerais un update stats soit toutes les nuits
soit une fois le week-end (suivant l'importance des MAJ)
et pour les serveurs décisionnels (serveurs infocentre mis à jour toutes les
nuits et chargés en requetes BO la journée), je décocherais l'option "auto
update stats" mais en m'assurant qu'un update stats est bien fait après
chaque alimentation (ou une supp/création des index) et je laisserais
l'option "auto create stats" afin de permettre la création de nouvelles
statistiques sur des colonnes utilisées dans une jointure/where si elles ne
sont pas indexées afin d'optimiser les requetes.
Est-ce un bon choix à votre avis ?
Encore merci pour éclaircissements

Houdini
Avatar
lionelp
Bonjour,

Il est possible de faire:
sp_spaceused sysindexes
ou
select sum(reserved)*8 from sysindexes where id=2 (ce qui revient au même)

L'histogramme (entête et échantillonage) doit faire dans les 32Ko maximum.
Il faut savoir que l'échantillonage conservera un maximum de 200 steps (voir
ouput du showcontig).

Concernant les _Wa_Sys_, îl est conseillé de suprimer ces statistiques après :
un changement de version
une installation de service pack ou de hotfix

Cordialement,
LionelP

"Houdini" a écrit :

Y a-t-il moyen de connaitre la taille des statistiques ?
En SQL Server 7 et 2000, je sais que les statistiques sont stockées dans
sysindexes.statblob qui est de type image et qui représente un pointeur mais
je
ne vois pas comment je peux connaitre la taille que représente les
statistiques
d'une table.
Par avance, merci pour votre réponse.