IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

Diverses questions sur SQL Server


Sujet :

MS SQL Server

  1. #1
    Membre chevronné
    Avatar de kedare
    Homme Profil pro
    Network Automation Engineer
    Inscrit en
    Juillet 2005
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Network Automation Engineer

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 548
    Points : 1 861
    Points
    1 861
    Par défaut Diverses questions sur SQL Server
    Hello,
    J'ai fais quelques projets sous SQL Servers, et j'ai quelques questions :

    • Une vue peut-elle utiliser les indexes des tables utilisés pour rendre la vue (donc jointures/conditions dans la définition de la vue) et sur les jointures/conditions utilisant la vue ? Si oui, quelle est l’intérêt d'indexer une vue (ce qui n'est pas disponible dans la version Express) ?
    • Quand je vais voir un rapport d'utilisation d'index, je vois que la date "Last User Update" ne change jamais, alors que l'index est bien utilisé en lecture, et que la table est constamment modifié, c'est normal ?
    • Vous recommandez quoi entre un id BigInt et un UUID comme clé primaire ?
    • Quelles sont les opérations de maintenances utiles a faire de temps en temps ? (Je fais des "shrink" de temps en temps sur les fichiers de données, et des "reorganize" sur les indexes)
    • Ou sont stockés les catalogues Fulltext ?


    Merci !

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Une vue peut-elle utiliser les indexes des tables utilisés pour rendre la vue (donc jointures/conditions dans la définition de la vue) et sur les jointures/conditions utilisant la vue ?
    Oui. Vous pouvez le voir en examinant le plan de requête d'une requête sur une vue (CTRL + L sous SQL Server Management Studio (SSMS) pour avoir le plan d'exécution graphique).

    Si oui, quelle est l’intérêt d'indexer une vue
    L'intérêt des vues indexées est à destination des requêtes fréquentes sur un certain nombre de tables dont les colonnes qui servent à effectuer les jointures ne sont pas indexées.
    C'est encore meilleur quand il s'agit d'aggréger des données, puisque dans ce cas là la vue indexée "calcule" de façon synchrone les valeurs des aggrégats (d'où le nombre des restrictions importants quand à leur spécification)

    Quand je vais voir un rapport d'utilisation d'index, je vois que la date "Last User Update" ne change jamais, alors que l'index est bien utilisé en lecture, et que la table est constamment modifié, c'est normal ?
    La colonne last_user_update indique en fait la dernière fois que l'index a été maintenu par une opération de l'utilisateur, et pas pas le moteur de bases de données.

    Vous recommandez quoi entre un id BigInt et un UUID comme clé primaire ?
    le BIGINT pour la simple raison que celui-ci occupe 8 octets au lieu des 16 du GUID.
    Comme lorsqu'on crée une clé primaire, un index cluster sous-jacent est automatiquement créé, et que l'on peut mettre à une colonne de type entier la propriété d'auto-incrémentation (IDENTITY), alors la fragmentation d'un tel index est réduite.
    Ensuite lorsque vous créez les index non-cluster sur la même table, ceux-ci référencent la clé de l'index cluster.
    Donc plus celle-ci est petite, plus vous pourrez mettre de lignes d'index dans les pages des deux types d'index, moins vous en aurez à parcourir, plus vos requêtes seront rapides.
    Donc pour faire simple : les GUID en clé primaire, c'est de la m....

    Quelles sont les opérations de maintenances utiles a faire de temps en temps ? (Je fais des "shrink" de temps en temps sur les fichiers de données, et des "reorganize" sur les indexes)
    Ne faites jamais de shrink, c'est totalement inutile est cela dégrade les performances de votre base de données.
    En effet si le fichier de données est arrivé à une telle taille, c'est que l'espace dans celui-ci a été nécessaire.
    Pareillement pour le fichier du journal des transactions, il convient de le gérer par rapport à votre mode de récupération.
    Si donc le moteur de base de données doit rallouer de l'espace disque à votre base de données, d'une part votre transaction mettra très longtemps à se terminer à cause du temps d'écriture disque (1000 fois plus lent qu'en RAM), et d'autre part cela va fragmenter vos fichiers, ce qui, vous vous en doutez, est contre-performant.
    Il est donc important de tailler les fichiers de la base de données à une taille convenable, et de maintenir le fichier du journal des transactions à l'aide des sauvegardes adéquates par rapport au mode de récupération de votre base de données.

    Pour les index, c'est suivant leur niveau de fragmentation; la documentation recommande le REBUILD pour une fragmentation supérieure à 30%, et un REORGANIZE pour une fragmentation comprise entre 10 et 30%.
    Vous devez comprendre la différence entre les deux pour comprendre cette recommandation.
    L'expérience prouve qu'elle est d'ailleurs assez bonne.

    Ou sont stockés les catalogues Fulltext ?
    Si vous êtes sous SQL Server 2008, ils sont dans le fichier de la base de données.
    Si vous êtes sous SQL Server 2005, ils sont dans un groupe de fichiers réservé à cet usage.
    Si vous êtes sous SQL Server 2000, ils sont dans C:\Program Files\Microsoft SQL Server\MSSQL\FTDATA par défaut.

    @++

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 561
    Points
    52 561
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par kedare Voir le message
    Hello,
    • Une vue peut-elle utiliser les indexes des tables utilisés pour rendre la vue (donc jointures/conditions dans la définition de la vue) et sur les jointures/conditions utilisant la vue ? Si oui, quelle est l’intérêt d'indexer une vue (ce qui n'est pas disponible dans la version Express) ?
    Une vue est une requête auquel on donne un nom. Elle se comporte donc exactement comme la requête qu'elle contient. Elle ne contient pas de données.
    Une vue indexée contient les données. C'est une sorte de redondance synchrone automatisée, destinée à améliorer les performances dans certaines conditions : en particulier lorsqu'il y a des calculs d'agrégats et que la table est volumineuse. Lisez l'article que j'ai écrit à ce sujet : http://sqlpro.developpez.com/optimisation/indexation/
    Contrairement à ce que vous pensez les vues indexées sont disponibles dans toutes les éditions, mais la substitution automatique des vues aux tables n'est supporté que dans les version avancées.

    Citation Envoyé par kedare Voir le message
    Hello,
    • Quand je vais voir un rapport d'utilisation d'index, je vois que la date "Last User Update" ne change jamais, alors que l'index est bien utilisé en lecture, et que la table est constamment modifié, c'est normal ?
    Cette données n'est modifiée que lors d'une opération de maintenance d'index comme REBUILD, REORGANIZE...

    Citation Envoyé par kedare Voir le message
    Hello,
    • Vous recommandez quoi entre un id BigInt et un UUID comme clé primaire ?
    Évitez absolument les GUID (UUID) c'est une aberration. Lisez ce que j'ai écrit à ce sujet : http://blog.developpez.com/sqlpro/p7...nt-le-verdict/
    D'autre part si vous êtes en 32 bits, préférez le INT et non le BIGINT, à moins que vous ayez plus de 4 milliards de lignes dans vos tables, ce qui est très rare ! En effet, plus votre clef sera proche de la longueur du mot du processeur plus vous gagnerez en rapidité à tous les niveaux !


    Citation Envoyé par kedare Voir le message
    Hello,
    • Quelles sont les opérations de maintenances utiles a faire de temps en
      temps ? (Je fais des "shrink" de temps en temps sur les fichiers de données, et des "reorganize" sur les indexes)
    SHRINK est une imbécilité ! Lisez ce que j'ai écrit à ce sujet : http://blog.developpez.com/img/chain_link.gif
    En revanche il y a 3 opération à faire :
    1) les sauvegardes (BACKUP base complète, différentielles, journal de transaction)
    2) vérification des structures de stockage (DBCC CHECK...)
    3) maintnance des index (reconstruction, défragmentation, reclaul des statistiques
    Et cela est à faire QUOTIDIENNEMENT et non pas de temps en temps !

    Voici quelques exemples de procédures complètes et automatisées de maintenance des index et ou structures d'allocation et la sauvegarde.
    Sauvegardes :
    http://blog.developpez.com/sqlpro/p7...ec-sql-server/
    http://blog.developpez.com/sqlpro/p6...es-de-donnees/
    http://blog.developpez.com/sqlpro/p5...ur-les-sauveg/
    http://blog.developpez.com/sqlpro/p8...c-nettoyage-d/
    http://blog.developpez.com/sqlpro/p9...garde-dans-un/
    http://blog.developpez.com/sqlpro/p8...re-sauvegarde/

    Maintenance des index structures et stats :
    http://blog.developpez.com/sqlpro/p8...es-index-et-s/
    http://blog.developpez.com/sqlpro/p8...-des-statisti/
    http://sqlpro.developpez.com/optimis...ntenanceIndex/

    Citation Envoyé par kedare Voir le message
    Hello,
    • Ou sont stockés les catalogues Fulltext ?
    En version 2008 dans la base au sein de tables systèmes :
    SELECT * FROM
    ... sys.dm_fts_index_keywords (DB_ID(???), OBJECT_ID(???)) --> mots indexées relatif à une base / un objet
    ... sys.dm_fts_index_keywords_by_document (DB_ID(???), OBJECT_ID(???)) --> mots indexées relatif à une base / un objet

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre chevronné
    Avatar de kedare
    Homme Profil pro
    Network Automation Engineer
    Inscrit en
    Juillet 2005
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Network Automation Engineer

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 548
    Points : 1 861
    Points
    1 861
    Par défaut
    Merci pour vos réponses

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 23/07/2013, 22h21
  2. Diverses versions d'SQL Server sur la même machine
    Par Totila dans le forum Administration
    Réponses: 4
    Dernier message: 30/05/2013, 19h55
  3. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  4. Quelques questions sur SQL Server 2000
    Par yinyang dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 07/12/2005, 19h39
  5. problème de float sur SQL server 2000.
    Par fidji dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2003, 14h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo