Le choix d’un index cluster est important pour une table de données. Des bonnes pratiques existent et permettent d’orienter ce choix. Dans ce billet je tenterais d’en expliquer la raison tout en expliquant le fonctionnement interne de ces index et les conséquences d’une mauvaise stratégie de ce type d’indexation. Je ne prétends pas donner la liste exhaustive des bonnes pratiques sur ce point mais d’en donner une première analyse
Archives pour la catégorie SQL Server 2005
Auditer l’espace physique et utile de l’ensemble des fichiers d’une base de données
Une des tâches d’un administrateur de bases de données consiste à surveiller la taille des données dans un fichier d’une ou plusieurs bases de données. Un fichier de données dimensionné pour une durée d’exploitation conséquente contient de l’espace inutilisé. Dans ce cas là comment surveiller l’évolution des données à l’intérieur de ce fichier ? Un script proposé par Elsuket permet de surveiller les fichiers d’une base de données en particulier. Le code qui suit est une évolution du précédent : vous pouvez auditer l’ensemble des fichiers d’une base de données.
Connaître les types de pages gérées par SQL Server
Pour bien commencer cette nouvelle 2010, j’ai envie de commencer par un billet concernant les types de pages que l’on peut rencontrer sur SQL Server. Depuis quelques temps, je m’intéresse beaucoup au fonctionnement interne de SQL Server. Etant amateur de voiture, je ferais une brève analogie. Il n’est pas indispensable de connaître en détail le fonctionnement d’une voiture pour pouvoir la conduire. Cependant si vous êtes passionné ou tout simplement curieux, vous aurez envie un jour ou l’autre de soulever le capot… Il en va de même pour SQL Server. Administrer SQL Server ne demande pas de connaître précisément le comportement interne du moteur. Cependant « maîtriser » le fonctionnement des processus internes du moteur ne peut qu’aider dans la maîtrise et le perfectionnement dans l’administration et la conception des bases de données avec SQL Server. J’en suis intimement convaincu. Dans ce billet je commencerais par aborder le thème suivant : Les types de pages que gèrent SQL Server. Nous verrons par la même occasion les différentes commandes permettant d’en visualiser le détail des pages comme DBCC PAGE, DBCC IND ou DBCC EXTENTINFO .
Comprendre le fonctionnement des snapshots avec SQL Server
Il est possible depuis SQL Server 2005 de créer des captures instantanées de base de données. Cependant je me suis aperçu que cette fonctionnalité était plutôt méconnue. Dans ce billet, j’essaierais d’expliquer au mieux le fonctionnent des captures instantanées et d’exposer les avantages et les inconvénients quant à leur utilisation.
Fonctionnement et utilisation des options de boot /3GB et /PAE avec SQL Server
Après avoir effectué des audits sur 2 serveurs de bases de données chez mon client, j’ai constaté qu’il y avait quelques confusions concernant les options bien connus /3GB et /PAE qui permettent d’étendre la mémoire vue et utilisée par le système d’exploitation et les applications. Les questions qui reviennent souvent sont les suivantes : Quand utiliser l’option /3GB ? Quand utiliser l’option /PAE ? Peux t’on utiliser les 2 options en même temps ? Nous allons y répondre .
SQL Server 2008, transtypage de date et optimiseur de requête
Avant SQL Server 2008, écrire une requête comportant un prédicat sur une date bien précise sans notion d’heures était plutôt fastidieux pour des requêtes sur des dates de transactions de stock par exemple où l’on désire un résultat à la journée . (Je prends l’exemple simple WHERE date = ‘20091001’). Dans ce cas là il fallait procéder à une transformation de la colonne de type DATETIME. Cependant, le nettoyage ou suppression des heures de cette colonne pouvait poser un inconvénient majeur car cela nécessitait un transtypage (je pense aux fonctions CAST et FLOOR qui donnent le résultat 20090101 00:00:00 par exemple). Hors le seul fait de transtyper une valeur de colonne empêche l’optimiseur de requêtes d’utiliser un index associé à cette même colonne. Cela obligeait par conséquent à écrire cette même requête avec un prédicat de date par intervalles (avec BETWEEN date AND date .).
Recréer un mappage rompu entre un compte de connexion SQL Server avec l’authentifcation Windows et un utilisateur de bases de données
Vous avez déjà sans doute eu le cas où un administrateur système par mégarde, a supprimé un compte Windows utilisé par votre serveur SQL et qui est mappé à un ou plusieurs utilisateurs de vos bases de données . Vous avez sans doute maudit ce pauvre et malchanceux administrateur système car le problème dans ce cas est que le nouveau compte Windows recréé avec les mêmes paramètres ne possèdent pas le même SID et que le mappage avec les différents utilisateurs de bases de données existants est rompu. La question évidente ici est comment allons nous faire pour pouvoir revenir à une situation normale ?
Comprendre les enregistrements fantômes (Ghost records) avec SQL Server
En utilisant la vue dynamique système sys.dm_db_index_physical_stats, vous avez sans doute remarqué la présence d’une colonne ghost_record_count que je traduirais par nombre d’enregistrement fantômes. Cette colonne est incrémentée à chaque fois qu’un enregistrement est supprimé d’une table comportant au moins un index.
Database Tuning Advisor (DTA) et ses limites d’utilisation
Vous avez sans doute, comme moi, utilisé l’outil de performance livré depuis la version 2005 de SQL Server et qui se nomme DTA (Database Tuning Advisor). Chez mon client actuel qui possède une base de données volumineuse en nombre d’objets (environ 15 000 entre les tables, les vues, les index et les statistiques) nous avons rencontré un problème quant à l’utilisation de cet outil en mode console.
Alertes SQL Server et WMI
Dans le cadre de la gestion des incidents et de la gestion de la capacité d’un service informatique, il peut être intéressant de définir des alertes de fonctionnement de SQL Server et de son environnement pour anticiper d’éventuels problèmes de fonctionnement. En effet, rien n’est plus désagréable pour une équipe de production par exemple d’être mis au courant par un utilisateur qu’un de ses serveurs est en panne ou que le système d’information ne fonctionne pas. La qualité de service de cette équipe s’en retrouverait affectée.