NOLOCK n’est définitivement pas ce que vous croyez

Mis en avant

Pour ceux qui croient encore qu’utiliser le hint nolock se prémunit contre tout verrou, lisez la suite de ce billet. J’avais déjà écrit un billet précédent sur le sujet il y a 3 ans environ, lorsque j’étais chez un client et que nous avions eu une discussion intéressante sur ce type de hint placé dans les requêtes de Reporting. Cette fois, j’ai pu expérimenté chez un autre client, une problématique de verrouillage intéressante en utilisant ce même hint.

> Lire la suite (en anglais)

David Barbarin
MVP & MCM SQL Server

Dilemme entre les filtres dynamiques et les requêtes « kitchen sink »

Mis en avant

Etre confronté aux filtres dynamiques est un scénario assez courant avec les applications de gestion ou les ERP. En effet, les utilisateurs voudraient avoir la flexibilité de filtrer and de trier leur données business comme ils veulent afin d’être le plus efficace possible. cibler et opérer rapidement sur les bonnes données est en phase avec les exigences de performances quotidiennes. Du moins c’est ce que j’ai pu noter chez différents clients.

> Lire la suite (en anglais)

David Barbarin
MVP & MCM SQL Server

Envie de faire un benchmark de votre stockage? Il est temps de passer à diskspd

Mis en avant

Comme vous le savez certainement, SQLIO est officiellement dépréciée depuis quelques mois. Pour ma part, j’ai eu l’occasion (peut être la dernière) d’utiliser SQLIO pour un projet client dans le but d’effectuer un benchmark de son stockage et préparer une installation AlwaysOn et groupes de disponibilité. Il est maintenant temps de passer au prochain outil prévu à cet effet: DiskSpd.

> Lire la suite (en anglais)

David Barbarin
MVP & MCM SQL Server

Jointure, transitivité et simplification de requête

Mis en avant

Au cours d’une discussion hier avec un de mes amis « oraclien » nous avons débattu sur les différents comportements d’optimisation entre Oracle et SQL Server sur un cas bien précis. Vous pouvez lire son billet ici et trouver un script pour reproduire le problème par vous même. J’ai donc décidé d’écrire un billet à mon tour parce que cette discussion avait introduit des concepts intéressants que je voulais approfondir côté SQL Server.

> Pour lire la suite (en anglais)

David Barbarin
MVP & MCM SQL Server

sp_cursor_fetch et performance

Mis en avant

Il y a quelques semaines lors d’un audit, mon client me parlait de problèmes de performances identifiés uniquement sur la phase de login de son application. Après des échanges divers entre le client et l’éditeur de logiciel, nous avons constaté que le problème ne se produisait pas lorsque l’application et l’instance SQL Server étaient installées sur le même serveur (moins d’une seconde avec la configuration de l’éditeur contre 10 secondes avec celle du client). A vrai dire, mon client ne possédait pas tout à fait la même configuration qui comprenait un serveur applicatif et un serveur de bases de données distant. Imaginez la déception du client lorsqu’il s’est aperçu que sa configuration matérielle était de loin plus puissante que celle de l’éditeur de logiciel pour ces tests avec un même volume données.

> Pour lire la suite (en anglais)

David Barbarin
MVP & MCM SQL Server

N’utilisez pas les paramètres par défaut AUTOGROW!

Mis en avant

Au cours de mes audits clients, j’ai souvent vu les paramètres d’expansion de fichiers par défaut sur les bases de données utilisateurs et comme vous le savez ceci n’est pas forcément une bonne pratique. Laissez moi vous raconter une histoire drôle vécue qui concerne une situation extrême avec un fichier journal et ses paramètres par défaut.

> Pour lire la suite (en anglais)

David Barbarin
MVP & MCM SQL Server

Utilisation des snapshots VSS et SQL Server – Part I

Mis en avant

Ceci est probablement une série de billets concernant les snapshots VSS et SQL Server. Laissez moi introduire le sujet avec cette anecdote:

Il y a quelques temps, nous avons implémenté une stratégie de sauvegarde chez un de mes clients basée sur une combinaison FULL, DIFF et sauvegarde du journal des transactions. Aucun problème pendant un moment et un jour mon client m’appelle en me disant que depuis un certain temps, la sauvegarde différentielle en place ne se faisait plus correctement avec le message d’erreur suivant ..

> Lire la suite (en anglais)

David Barbarin
MVP & MCM SQL Server

Quand tempdb peut être à l’origine de problèmes indirects

Mis en avant

Il y a quelques semaines, j’ai discuté d’un cas intéressant avec un de mes amis qui a fait face à un problème étrange (en surface) avec une instance SQL Server qui a manqué de threads de travail. Je ne peux malheureusement pas dévoiler le vrai contexte client ici mais j’ai décidé de reproduire le même problème afin de partager avec vous certaines informations intéressantes. La prochaine partie de ce blog se réfère uniquement à mes propres tests qui représentent dans sa plus grande partie le problème cité ci-dessus.

> Lire la suite (en anglais)

David Barbarin
MVP & MCM SQL Server

Une histoire sympathique avec les options de recompilation au niveau requête

Mis en avant

La nuit dernière, j’ai eu une discussion intéressante avec un de mes amis MVP SQL Server qui a rencontré une situation étrange où une requête qui utilisait une option de recompilation produisait un plan d’exécution qui l’a désappointé. Ce dernier m’a dit qu’il était possible de simuler cette même situation en utilisant la base de données AdventureWorks et la table Sales.SalesOrderHeader.

> Lire la suite (en anglais)

David Barbarin
MVP & MCM SQL Server

S’aventurer dans l’insertion en masse d’un fichier d’erreur SQL Server et l’ordre des données

Mis en avant

N’avez-vous jamais tenté une insertion en masse d’un fichier d’erreur SQL Server pour en extraire les informations utiles dans un rapport par exemple?
Si tel est le cas, vous vous êtes probablement demandé comment garder l’ordre du fichier dans une requête sans avoir une colonne de référence pour l’ordre des données. Il existe bien entendu des solutions mais ce n’est pas le but de ce billet. A la place, je voudrais partager avec vous une discussion intéressante sur le forum developpez.com concernant l’assurance d’obtenir l’ordre les données dans un fichier d’erreur SQL Server avec une simple requête SELECT sans spécifier la clause ORDER BY.

> Lire la suite (en anglais)

David Barbarin
MVP & MCM SQL Server