Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4
  1. #1
    Membre Expert

    Inscrit en
    juillet 2006
    Messages
    1 421
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 1 421
    Points : 1 086
    Points
    1 086

    Par défaut "Out of row" suffisant?

    Bonjour.

    Est-ce qu'il est plus intéressant de définir des champs de type NVARCHAR(MAX) (ou TEXT) directement dans la table même ou plutôt dans une table extérieure sachant que ce champ ne sera pas nécessaire dans la plupart des lecture de données.

    Je me pose la question, car ces données sont de toute manière stockées Out of row.

    Exemple :
    1)
    Table Client : Identitfiant, nom, prénom, biographie

    VS

    2)
    Table Client : Identitfiant, nom, prénom
    Table Biographie : ClientID, biographie


    Merci.
    Most Valued Pas mvp

  2. #2
    Membre Expert

    Inscrit en
    juillet 2006
    Messages
    1 421
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 1 421
    Points : 1 086
    Points
    1 086

    Par défaut

    Après plusieurs recherches, j'ai trouvé la réponse à cette question.

    Si vous voulez la connaître, je vous invite à la présentation que je ferai ce vendredi 14 décembre à 10h10 à la grand place de Bruxelles (plus exactement sous le "sapin").
    Je remercie mon sponsor, les boutiques de farce et attrapes "Guy Lee - Guilli" qui financeront la dite présentation.

    J'espère vous y voir nombreux.
    Most Valued Pas mvp

  3. #3
    Membre Expert

    Inscrit en
    juillet 2006
    Messages
    1 421
    Détails du profil
    Informations forums :
    Inscription : juillet 2006
    Messages : 1 421
    Points : 1 086
    Points
    1 086

    Par défaut

    Triste nouvelle, la présentation est annulée

    Apparemment mon sponsor aurait subit de fortes pressions d'une certaine Estelle Praux et s'est rétracté

    Mais, bon prince, je vous donne quand même la réponse :

    Avoir la valeur à même la table et out of row (désactivé par défaut, ne l'oublions pas) est plus performant.

    J'aurais dû vous expliquer des trucs sur les pointeurs et le storage tempdb mais là, du coup, je n'y ai plus le coeur.

    Estelle Praux, qui que tu soit, je ne te remercie pas.
    Most Valued Pas mvp

  4. #4
    Expert Confirmé Sénior
    Avatar de mikedavem
    Homme Profil pro David BARBARIN
    Architecte de base de données
    Inscrit en
    août 2005
    Messages
    4 618
    Détails du profil
    Informations personnelles :
    Nom : Homme David BARBARIN
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : août 2005
    Messages : 4 618
    Points : 9 979
    Points
    9 979

    Par défaut

    Avoir la valeur à même la table et out of row (désactivé par défaut, ne l'oublions pas) est plus performant.
    Pas forcément je pense.

    Je précise tout d'abord que le choix des types NVARCHAR(MAX) (ou TEXT) n'ont pas du tout le même impact sur le stockage. Les types avec longueurs MAX laissent le choix à SQL Server de la manière de stocker les données (soit in-row, soit row-overflow soit LOB). Tout dépend en réalité la longueur des données insérés ou mis à jour. D'ailleurs c'est un des pièges de ce type de données car en fonction de cela les données des colonnes concernées peuvent être déplacées d'un type de stockage à un autre (consommateur en allocation et en écriture dans le journal)

    Ceci étant dit prenons le cas le plus simple avec les données de la colonne biographie dans un type de stockage à part LOB :

    Table Client : Identitfiant, nom, prénom, biographie
    Dans le cas d'un SELECT sur les colonnes Identifiant, nom, prénom c'est relativement intéressant car du fait du pointeur 24 octets (en fonction) seuls les pages in-row seront concernés.

    Prenons le cas d'une maintenance maintenant. Le fait de tout avoir dans une page peut être problématique. Les opérations de maintenance sur les types LOB ne sont pas forcément réputés pour être aussi rapides que les données in-row. Je ne rentre pas dans le détail mais avoir un partionnement vertical ici peut être intéressant surtout si on a beaucoup de volumétrie dans la colonne bibliographie et que la table principale est très sollicitée.

    ++

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •