Archives de l’auteur : SQLpro

Modèle générique vs modèle spécifique

Dans le cadre d’un héritage de données ayant de multiples enfants aux caractéristiques très diverses, est-il préférable de concevoir un modèle de données générique ou un modèle de données spécifique ? De nombreux jeunes développeurs pensent naïvement qu’un modèle générique est plus facile… Mais c’est souvent une erreur qu’il faudra payer au prix fort une fois l’application fonctionnelle. Démonstration…
Lire la suite

Cosmos DB, la base NoSQL à tout faire !

Vous en rêviez ? Cosmos DB l’a fait ! Une seul base de données, permettant à la fois et dans un même espace de stockage de combiner les différentes technologies des bases de données NoSQL… « Wide Column », « Graph Database », « Key-Value » et « Document Stores », toutes ces technologies sont disponible dans une seule et même base de données de nom Cosmos DB…
Lire la suite

Une peste nommée NOLOCK… et comment l’éviter

L’utilisation du tag de table NOLOCK, hélas largement prisé par de nombreux développeurs, est, la plupart du temps, une absurdité conduisant à des résultats potentiellement faux. Est-il possible de faire autrement pour minimiser les blocages induit par les verrouillages dans SQL Server ? Réponse OUI !
Lire la suite

Comparer deux requêtes aux résultats identiques

Comment savoir si deux requêtes donnent le même résultat ?

Il suffit d’une simple équation ensembliste pour ce faire. Sachant que la requête 1 donne comme résultat l’ensemble A et que la requête 2 donne comme résultat l’ensemble B, prouver que ces deux requêtes donnent le même résultat, nécessite d’appliquer l’équation :

A – B U B – A = Ø
Lire la suite

Extraire le code des requêtes d’un verrou mortel traqué par un graphe « deadlock » du profiler

L’outil profiler de SQL Server permet de partir à la chasse au verrous mortel et peut récupérer le graphe du verrouillage des éléments concurrents et notamment les données technique de la victime. Mais ce graphe est en fait un document XML contenant toutes les informations sur les processus en jeu, la victime et les survivants. Il est alors intéressant d’en extraire les requêtes fautives afin de corriger son code ou d’indexer les tables, quelques un des moyens de se débarrasser des interblocages…
Lire la suite

Estimation des IO (ES) en lecture et écriture table par table d’une base SQL

Les deux requêtes que je vous présente permettent d’estimer le nombres de pages lues et écrites table par table tenant compte de tous les index des tables. Attention : il ne s’agit pas d’une mesure exacte. Une telle mesure est impossible mais bien d’une estimation pour connaître les tables les plus écrites et celles les plus lues de manières relatives les unes aux autres.
Lire la suite

Métrique de volumétrie du stockage par table, index et partition

Voici une petite requête complémentaire pour mesurer les volumes stockées par partition, index et tables d’une base :
Lire la suite

Vérification de la dernière sauvegarde d’une base

Parmi les opérations importantes à systématiser, la vérification de consistance d’une sauvegarde est une opération à ne pas négliger. Mais compte tendu qu’une sauvegarde peut être multi-famille (donc répartie sur plusieurs fichiers), multi-support (donc redondées dans plusieurs destinations) ou intégré dans un « device » (donc noyée au milieu de plusieurs sauvegarde dans un fichier), la complexité augmente d’autant. Voici donc une petite procédure pour ce faire…
Lire la suite

Agrégation des statistiques d’IO d’une requête

Si le paramétrage SET STATISTICS IO ON de Microsoft SQL Server permet de savoir, table par table les statistiques d’entrées/sorties (IO pour Input/Output) des requêtes, il n’est pas toujours facile de s’y repérer lorsque la requête est complexe et fait appel à de multiples tables. Voici une procédure qui en effectue la synthèse.
Lire la suite