octobre
2010
Il arrive souvent que le modèle de données d’une base SQL SERVER ne prévoit pas la suppression en cascade ou la mise à jour en cascade entre les tables PARENT-ENFANT. Pour effectuer donc un DELETE ou un UPDATE dans la table PARENT il faut d’abord faire en amont la même opération dans toutes les tables ENFANTS. Comment faire donc un DELETE ou UPDATE en cascade sans toucher au modèle de données et sans trigger ?
octobre
2010
Pour répondre rapidement aux instructions, SQL SERVER dispose d’un pool de mémoire pour stocker les plans d’exécution et les données. La part du pool de mémoire utilisée pour stocker les plans d’exécution est appelée le cache de procédures. Lorsqu’une instruction SQL est lancé, le moteur relationnel parcourt d’abord le cache de procédures pour voir s’il existe un plan d’exécution pour la même instruction, afin de réutiliser ce plan. Ceci évite donc au moteur de mobiliser […]
octobre
2010
On ne le dira jamais assez : une mauvaise écriture de requête SQL et surtout la méconnaissance du fonctionnement des SGBD peuvent conduire à une catastrophe ! tenez, une requête du genre SELECT * FROM T_TEST WHERE id LIKE @id peut mettre à genou votre serveur. Voici une petite démo. Cette démo est inspirée d’un cas concret de requête lancée par une application commerciale sur un serveur SQL de production.
septembre
2010
Monitorer les jobs d’une instance SQL Server (2005 ou 2008) à l’aide du T-SQL
septembre
2010
Peut-on créer un index sur une colonne non déterministe ? Qu’est ce qu’une colonne déterministe ou non ? comment les identifier ?
septembre
2010
Quels sont les conditions pour créer un index sur une colonne calculée ou une vue ? Voici un scénario pour mettre en évidence les pré-réquis.
septembre
2010
Quand on parle de statistiques pour un serveur de base de données, il faut distinguer : 1 – les statistiques d’activités du SGBD : les indicateurs (compteurs) de performances collectés par le SGBD 2 – les statistiques d’optimisation de requêtes; ces statistiques sont créées/utilisées par l’optimiseur de requête pour estimer le nombre de lignes (cardinalité) renvoyées par une requête. Ces estimations de cardinalité permettent à l’optimiseur de requête de créer un plan de requête de […]
septembre
2010
L’idée est d’examiner l’utilisation des index non-cluster par l’optimiseur de requête. Afin de mettre en évidence le choix du moteur de base données vis à vis des index non-cluster couvrants avec colonnes incluses ou non
septembre
2010
Le « Tipping point » qu’on peut traduire littérallement par point de basculement, correspond à la situation où un index non cluster n’est pas utilisé par l’optimiseur dans le cas d’une requête SARGable. Je préfère utiliser le terme Zone (ou ligne) de basculement que le terme « point de basculement » (Tipping point) parce qu’il me semble que la notion de point n’existe pas dans une base de données ! En mathématique, le point de basculement existe. Par exemple […]
septembre
2010
GO n’est pas une instruction Transact-SQL, mais une commande reconnue par les utilitaires sqlcmd, osql et l’éditeur de code SQL Server Management Studio (ssms). Les utilitaires SQL Server n’envoient jamais de commande GO au serveur. Les utilitaires SQL Server interprètent GO comme le signal qu’ils doivent envoyer le traitement Transact-SQL en cours à une instance SQL Server. La commande GO est aussi utilisée par les utilitaires SQL Server pour signaler la fin d’un traitement. Les […]