août
2012
Soit les tables T1 et T2 suivantes : create table T1 (col1 int) create table T2 (col2 int) insert into T1 select 1 union select 2 union select 3 union select null insert into T2 select 4 union select 2 union select 5 union select null Pourquoi la requête SELECT * FROM T1 WHERE col1 NOT IN (SELECT col2 FROM T2) ne renvoie aucune valeur alors que SELECT * FROM T1 WHERE col1 IN (SELECT […]
juin
2012
La norme SQL n’a rien proposé jusqu’à ce jour pour stocker les types de données network (IPv4, IPv6, masque de sous-réseau,…) . Les « grands » éditeurs de SGBD ne disposent pas encore de types de données capable de stocker et de manipuler aisément les données de types IP par exemple. Dans ce domaine PostGreSQL est largement en avance. Pour illustrer mes propos prenons un exemple simple : Imaginer une application web qui stocke l’adresse IP des […]
mai
2012
Petite discussion sur les transactions implicite, explicite et auto-commit d’une part et variation de la variable @@TRANCOUNT en fonction de l’option SET IMPLICIT_TRANSACTIONS d’autre part. Il s’agit ici des transactions SQL, des transactions au sein du SGBD SQL Server.
avril
2012
Lorsque deux processus (instructions sql) tentent simultanément de modifier (INSERT,UPDATE,DELETE) les mêmes données, le SGBD empêche les traitements simultanés de ces processus afin de protéger les données et l’intégrité de la base. SQL Server crée un verrou pour chaque processus et les gère selon un agorithme FIFO (First In First Out). Dans ce cas SQL Server impose un traitement en série dans instructions, ce qui entraine donc des temps d’attente, donc des blocages. Mais lorsque […]
avril
2012
Une transaction SQL est caractérisée par un mode d’accès (READ ONLY ou READ WRITE),un niveau d’isolation (READ UNCOMMITED,READ COMMITED,REPEATABLE READ,SERIALIZABLE) et un niveau de diagnostic (DIAGNOSTIC SIZE).Le mode d’accès permet de préciser explicitement les opérations (lecture seule ou lecture/écriture) à réaliser sur la transaction. Le niveau d’isolation permet d’indiquer avec quel acharnement on souhaite protéger les transactions les unes des autres. Le niveau de diagnostic permet de limiter le nombre d’ereur dans la transaction. Selon […]
avril
2012
La norme SQL standard (ANSI/ISO) affirme que : 1. la première instruction SQL lancée depuis une session est considérée comme le début d’une transaction (même si le verbe BEGIN TRANSACTION n’est pas indiqué). 2. la fin de toute transaction DOIT se terminer de façon EXPLICITE par un ROLLBACK ou un COMMIT. C’est ce que dit la norme SQL à propos de la notion de début et fin d’une transaction SQL. Rappelons qu’une transaction SQL est […]
mars
2012
La norme SQL propose un moyen de poser des points de restaurations dans une transaction : les SAVEPOINTs. L’idée c’est de pouvoir revenir à une étape donnée dans la transaction. Selon la norme SQL la synthaxe pour créer un SAVEPOINT est la suivante :SAVEPOINT savepoint_name et pour revenir en arrière :ROLLBACK TO SAVEPOINT savepoint_name . La commande SAVEPOINT n’existe pas sous MS SQL SERVER mais une commande similaire exite : SAVE { TRAN | TRANSACTION […]
mars
2012
–> Vidéo 5 minutes pour comprendre les modèles de licences pour SQL SERVER 2012 –> PDF Modèles de licences pour SQL SERVER 2012
mars
2012
Les curseurs font partie intégrante de la norme SQL. Ils sont utilisés dans les SGBDRs pour réaliser des traitements ligne par ligne. Le temps de traitement des transactions SQL utilisant des curseurs dépend du SGBDR, de la qualité/quantité des données traitées, de l’écriture de la transaction SQL contenant le curseur, …. Un curseur utilisé et qui n’est pas fermé (ne se termine pas par CLOSE nomCurseur et DEALLOCATE nomCurseur) aura des incidences sur la performance […]
mars
2012
Il est souvent recommandé d’indexer les clés étrangères (FK). Cette opération d’indexation ne doit pas se faire de façon mécanique. Elle devrait passer par les phases d’analyse, de création et de test. Mais avant comment identifier les FKs non indexés ?