Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/05/2011, 22h01   #1
Modérateur
 
Avatar de Chtulus
 
Homme Cédric
Cherche à comprendre
Inscription : avril 2008
Messages : 2 262
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Cherche à comprendre

Informations forums :
Inscription : avril 2008
Messages : 2 262
Points : 4 421
Points : 4 421
Envoyer un message via MSN à Chtulus Envoyer un message via Skype™ à Chtulus
Par défaut Les NULL et les colonnes fragmentées

Bonsoir,

J'aurais une petite question

Voilà, il y a peut j'ai regardé l'aide sur les colonnes fragmentées pour les NULL.

Je n'y ai pas prêté plus attention car je n'ai jamais été confronté à un cas de pourcentage de NULL aussi élevé que cette discussion.

- Du coup, si vous auriez des exemples de cas dans lesquels le pourcentage de NULL est supérieur à 60%, cela m'intéresse Par curiosité

Enfin ma question :

L'utilisation des colonnes fragmentées a-t-elle un impact uniquement sur l'espace utilisé ou est-ce que cela à une réelle incidence sur le traitement d'une requête (Je parle pas d'instruction tel INSERT, UPDATE... etc !) ?


Merci d'avance
__________________
- De quelque manière qu'on s'y prenne on s'y prend toujours mal -
-Sigmund Freud-

Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
Tous les cours Office

Chtulus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 06h55   #2
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
Bonjour,

Je crois que tout est dans la documentation .

Dans le cas que vous donnez ici, effectivement un index filtré sur 'maColonne IS NULL' n'a pas de sens.

Comme une colonne fragmentée de prend pas d'espace physique pour stocker une colonne dont les valeurs sont massivement à NULL, je pense qu'en plus du gain d'espace, on soit obtenir un certain gain de performances (le nombre de pages devrait être moindre, donc le parcours d'un index devrait se faire plus vite).

En revanche comme le stockage d'une valeur demande 4 octets de plus que la normale, il faut bien juger le gain d'espace avant de l'implémenter.

Il est aussi à noter que les données utilisateur stockables dans une page d'une table dont une colonne au moins est fragmentée passe de 8060 à 8018 octets.

Enfin pour juger du gain ou de la perte de performances à l'ajout, la modification ou la suppression de lignes, je pense qu'on ne peut pas émettre de règle là-dessus : la manipulation d'une table contenant une seule colonne fragmentée pour un type bit ne doit pas être la même que pour une colonne fragmentée de type XML ...

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 10h12   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
Par exemple pour la DDE du Gard (Concentrateur de données du SPCGD : Service de prévision des crues du grand delta du rhône), le stockage de la pluviométrie est à 98% constitué d'une valeur 0... D’où l'idée de ne pas stocker ces valeurs et les remplacer par du NULL (sachant que ce qui nous intéresse c'est la cumul pluvio, dans ce cas NULL et 0 donne le même résultat).
Et une table de plusieurs centaines de millions de lignes.
Mais pour des raisons de budget, il a été décidé de prendre la version standard sur lequel ceci n'est pas implémenté !

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 10h54   #4
Modérateur
 
Avatar de Chtulus
 
Homme Cédric
Cherche à comprendre
Inscription : avril 2008
Messages : 2 262
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Cherche à comprendre

Informations forums :
Inscription : avril 2008
Messages : 2 262
Points : 4 421
Points : 4 421
Envoyer un message via MSN à Chtulus Envoyer un message via Skype™ à Chtulus
Bonjour,

@Elsuket: Merci pour les précisions (C'est bien la Doc que je m'étais coltinée )
Citation:
Enfin pour juger du gain ou de la perte de performances à l'ajout, la modification ou la suppression de lignes, je pense qu'on ne peut pas émettre de règle là-dessus : la manipulation d'une table contenant une seule colonne fragmentée pour un type bit ne doit pas être la même que pour une colonne fragmentée de type XML ...
Je me garde ça de côté !

@SQLpro: Merci pour l'exemple, 98% de NULL/0, c'est énorme !

__________________
- De quelque manière qu'on s'y prenne on s'y prend toujours mal -
-Sigmund Freud-

Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
Tous les cours Office

Chtulus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 11h05   #5
Responsable SQL Server

 
Avatar de mikedavem
 
Homme David BARBARIN
Expert SQL Server
Inscription : août 2005
Messages : 3 723
Détails du profil
Informations personnelles :
Nom : Homme David BARBARIN
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Expert SQL Server
Secteur : Conseil

Informations forums :
Inscription : août 2005
Messages : 3 723
Points : 6 844
Points : 6 844
Concernant l'espace de stockage sauvé la documentation dit ceci (je prends quelques exemples) :

Bit 0.125 (NOT SPARSE) 4,125(SPARSE) 98% NULL
int 4 (NOT SPARSE) 8 (SPARSE) 76% NULL

Les valeurs de fin indiquent qu'il faut au moins avoir 98% / 76% de lignes avant une absence de valeur pour la colonne concernée pour au moins espérer 40% d'économie sur le stockage. Il faut donc prendre en considération le type de données et le % d'absences de valeurs pour espérer gagner de la place. Un mauvais calcul conduirait à avoir une table plus volumineuse avec l'utilisation des colonnes fragmentées.

Les colonnes fragmentés peuvent également jouer tout leur rôles dans les tables EAV (Entité Attribut Valeur).

++
mikedavem est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 11h32   #6
Modérateur
 
Avatar de Chtulus
 
Homme Cédric
Cherche à comprendre
Inscription : avril 2008
Messages : 2 262
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Cherche à comprendre

Informations forums :
Inscription : avril 2008
Messages : 2 262
Points : 4 421
Points : 4 421
Envoyer un message via MSN à Chtulus Envoyer un message via Skype™ à Chtulus
Citation:
Envoyé par mikedavem Voir le message
Les colonnes fragmentés peuvent également jouer tout leur rôles dans les tables EAV (Entité Attribut Valeur).
Je les avais oubliées celles là
__________________
- De quelque manière qu'on s'y prenne on s'y prend toujours mal -
-Sigmund Freud-

Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
Tous les cours Office

Chtulus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 12h45   #7
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
Il faut les oublier, c'est une horreur !

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/06/2011, 17h06   #8
Modérateur
 
Avatar de Chtulus
 
Homme Cédric
Cherche à comprendre
Inscription : avril 2008
Messages : 2 262
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Cherche à comprendre

Informations forums :
Inscription : avril 2008
Messages : 2 262
Points : 4 421
Points : 4 421
Envoyer un message via MSN à Chtulus Envoyer un message via Skype™ à Chtulus


Pourquoi dites vous cela @elsuket ?

__________________
- De quelque manière qu'on s'y prenne on s'y prend toujours mal -
-Sigmund Freud-

Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
Tous les cours Office

Chtulus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 19h12   #9
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 432
Points : 10 432
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Parce que c'est très facile à remplir, mais quasiment impossible à interroger de façon ensembliste et performante.
__________________
Email : http://scr.im/waldar
Waldar est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2011, 09h25   #10
Modérateur

 
Avatar de elsuket
 
Homme Nicolas Souquet
Administrateur de base de données
Inscription : janvier 2005
Messages : 4 669
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Souquet
Âge : 30
Localisation : Thaïlande

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2005
Messages : 4 669
Points : 8 729
Points : 8 729
Héhé oui, EAV ... on a le choix entre :

- Entity Attribute Value
- Entity Attribute Violation

Cette approche n'est absolument pas ensembliste, donc ce n'est pas du SQL ...
On stocke tout dans une colonne varchar, quel que soit le type réel de la valeur, et allez, CAST dans les jointures

Enjoy

@++
__________________
En bases de données relationnelles SQL, il n'y a ni tableaux, ni enregistrements, ni champs: il y a des tables, des lignes et des colonnes.
Blog | Profil| Consulter ou télécharger les fichiers d'aide de SQL Server, des versions 2000 à 2012
elsuket est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2011, 11h31   #11
Modérateur
 
Avatar de Chtulus
 
Homme Cédric
Cherche à comprendre
Inscription : avril 2008
Messages : 2 262
Détails du profil
Informations personnelles :
Nom : Homme Cédric
Âge : 32
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Cherche à comprendre

Informations forums :
Inscription : avril 2008
Messages : 2 262
Points : 4 421
Points : 4 421
Envoyer un message via MSN à Chtulus Envoyer un message via Skype™ à Chtulus
Bonjour,

Vu comme ça effectivement

Merci
__________________
- De quelque manière qu'on s'y prenne on s'y prend toujours mal -
-Sigmund Freud-

Les meilleurs cours, tutoriels et Docs sur les SGBD et le SQL
Tous les cours Office

Chtulus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h51.


 
 
 
 
Partenaires

Hébergement Web