[SQL Server] Accès concurrentiels : brève présentation des types de contrôle de la concurrence

Ce petit billet présente les contrôles de la concurrence sous SQL Server. SQL Server possède principalement 2 types de contrôle de la concurrence (ou stratégies de verrouillage) : le contrôle pessimiste (par défaut) et le contrôle optimiste. Il existe également un 3ème type (plus exceptionnel) de contrôle de la concurrence : le contrôle anarchique (ou chaotique). Lire la suite

[SQL Server] Curseurs : comparaison de performances avec une boucle WHILE

Ce petit billet offre quelques éléments de comparaison de performances entre un curseur et une boucle WHILE. Il est de notoriété publique que les curseurs sont à éviter et qu’il est de bon ton de les remplacer par, par exemple, une boucle WHILE pour des raisons de performances.

Nous allons nous intéresser aux statistiques I/O et aux temps d’exécution. De plus, chaque type de curseur sera testé (FAST_FORWARD, STATIC, KEYSET et DYNAMIC).

Lire la suite

[SQL Server] Curseurs : présentation générale

En règle générale, l’utilisation d’un curseur est vivement déconseillée pour principalement des raisons de performances, SQL Server étant optimisé pour les opérations ensemblistes, sachant que les curseurs effectuent des opérations itératives. Ce billet présente néanmoins ce qu’est concrètement un curseur, comment il fonctionne sous SQL Server et en quoi il peut avoir un impact négatif sur les performances.

Lire la suite

[SQL Server] TempDB : comparaison des performances entre les tables temporaires et les tables variables

Ce billet offre une série de comparatifs entre les tables temporaires et les tables variables (ou variables tables) au niveau des performances de leurs traitements. Nous nous focaliserons surtout sur les temps de réponse des insertions, suppressions, modifications et sélections de lignes de données.

Lire la suite

[SQL Server] TempDB : les tables variables sont-elles indépendantes des transactions d’utilisateurs ? Démonstration…

Ce petit billet démontre que les tables variables ne sont pas affectées par les transactions crées par des utilisateurs. Dans notre démonstration, nous focaliserons notre test sur l’utilisation de ROLLBACK qui permet d’annuler une transaction effectuée sur un objet.

Lire la suite