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
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 ?
janvier
2012
On désire mettre à jour plusieurs tables via une vue. –> La vue CREATE VIEW V_Clients_Commandes (id_client,nom_client,tel_client,mobile_client,date_commande,etat_commande,date_livraison) AS SELECT cli.IDClient,cli.NomClient,cli.Tel,cli.Mobilephone,com.DateCommande,com.EtatCommande,com.DateLivraison FROM Clients cli inner join Commandes com ON cli.IDClient = com.IDClient –> Les tables membres de la vue CREATE TABLE dbo.Clients( IDClient int IDENTITY(1,1) NOT NULL PRIMARY KEY, NomClient varchar(20) NULL, Tel varchar(20) NULL, Mobilephone [varchar](20) NULL ) CREATE TABLE dbo.Commandes( IDCommande int IDENTITY(1,1) NOT NULL PRIMARY KEY, […]
janvier
2012
On désire alimenter plusieurs tables via une vue. –> la vue CREATE VIEW V_Clients_Commandes (id_client,nom_client,tel_client,mobile_client,date_commande,etat_commande,date_livraison) AS SELECT cli.IDClient,cli.NomClient,cli.Tel,cli.Mobilephone,com.DateCommande,com.EtatCommande,com.DateLivraison FROM Clients cli inner join Commandes com ON cli.IDClient = com.IDClient –> Les tables CREATE TABLE dbo.Clients( IDClient int IDENTITY(1,1) NOT NULL PRIMARY KEY, NomClient varchar(20) NULL, Tel varchar(20) NULL, Mobilephone [varchar](20) NULL ) CREATE TABLE dbo.Commandes( IDCommande int IDENTITY(1,1) NOT NULL PRIMARY KEY, IDClient int NOT NULL, EtatCommande […]