jeudi 16 juillet 2020

Isolation snapshot et version tag

Une question que posent souvent les développeurs : comment éviter les verrous bloquants à la lecture des données ?

Une des (mauvaises) solutions est d'utiliser la directive NOLOCK (ou isolation READ UNCOMMITTED) : c'est un faux ami car cela ne garantit pas la cohérence transactionnelle des données que l'on lit.

L'autre solution est d'utiliser un niveau d'isolation "optimiste", par versionning : SNAPSHOT ou READ COMMITTED SNAPSHOT (RCSI).

Le principe de l'isolation par versionning est le suivant : plutôt que de poser un verrou partagé pour lire les données (ce qui empêchera de lire des données en cours de modification), SQL Server va renvoyer la dernière version validée des données : il utilise pour cela le "Version Store", qui stocke de manière transparente cette version des données dans Tempdb.

Un effet de bord mal connu de l'isolation SNAPSHOT (ou RCSI) est qu'il ajoute un pointeur de 14 octets à chaque ligne de données dès qu'on la modifie, ce qui peut poser certains problèmes. Voyons cela de plus près.

Lire la suite...

lundi 29 juin 2020

Eliminer ou chercher les accents

Une question qui m'a été posée : comment savoir si la colonne d'une table contient des caractères accentués ou des minuscules et comment y éliminer les accents ? Cela avec SQL comme avec SSIS : voyons quelques astuces...

Lire la suite...

mardi 12 mai 2020

Le 6 juin 2020 : Power Saturday

Le Power Saturday / SQL Saturday 2020 à Paris se tiendra le 6 juin 2020. Ce sera une manifestation en ligne, covid-19 oblige.

J'aurai le plaisir de vous présenter cette année une session avancée, orientée optimisation des performances :

SQL Server 2019, de l'intelligence sous le capot

SQL Server 2019 et le traitement intelligent des requêtes : dans cette session, nous verrons comment les versions récentes de SQL Server améliorent les performances des requêtes en embarquant plus d'intelligence. Nous observerons en profondeur quelques unes des fonctionnalités intelligentes de SQL Server 2019 (pour certaines apparues déjà avec SQL Server 2017) : encapsulation des fonctions scalaires, feedback d'allocation mémoire, mode batch en row store, compilation différée des variables tables, jointures adaptatives, ...

Inscrivez vous sur : http://powersaturday.com

lundi 20 avril 2020

Un peu d'histoire

"Nous sommes dans l'ère de l'information.
Avoir l'information sous la main, au moment où il faut, voilà la clef de la réussite.
Tous les jours, au bureau, à l'usine, à la maison, vous ressentez ce besoin."

Non, ce n'est pas la pub pour le dernier smartphone et ça ne date pas d'aujourd'hui : c'était la présentation du premier ordinateur personnel d'IBM, l'IBM PC de 1981.

En rangeant mes vieux papiers, je suis tombé sur ce collector : le dossier publicitaire d'époque sur papier glacé, complet, dans sa pochette cartonnée.
Cela mérite quelques extraits...

Lire la suite...

dimanche 12 avril 2020

Nouveau SSMS custom report : Always On

Dans ma palette de rapports custom pour SQL Server Management Studio, il manquait un rapport sur les groupes de disponibilité Always On. Assez utile, dans la mesure ou SSMS ne propose rien d'autre que le "tableau de bord", qui n'est pas franchement synthétique ni ergonomique.

C'est chose faite avec ce nouveau rapport, téléchargeable ici.

Voila un aperçu :

Les autres rapports sont toujours téléchargeables sur https://github.com/datafly/SSMSInfoReports

SSMSInfoReports, version à publier sur SSRS

Un ingénieur Microsoft (Senior Premier Field Engineer) de Pensylvanie m'a contacté car il utilise mes rapports SSMS "custom" depuis quelques années auprès ses clients.

En plus de les utiliser seulement depuis SSMS, il avait besoin de les publier sur un serveur Reporting Services.

Il m'a fourni une version où il a modifié les sources de données et les passages de paramètres entre rapports : à toutes fins utiles, si vous avez besoin vous aussi de les publier sur un portail SSRS, les fichiers RDL sont disponibles ici.

Bien sûr, les dernières versions pour SSMS sont toujours disponibles sur github.

lundi 30 mars 2020

Big data cluster : quelques tests

Une troisième vidéo sur les clusters big data SQL Server 2019.

J'ai voulu cette fois-ci faire quelques tests : performances de chargement et d'interrogation de données.

Les données sont :

  • Soit stockées dans le storage hdfs du cluster et interrogées directement via Polybase
  • Soit chargées dans le sql data pool distribué, et interrogées aussi via table externe
  • Soit dans une table SQL Server classique.

Je n'ai peut-être pas les volumes nécessaires pour faire du "vrai" big data, mais les performances à l'interrogation de données sont de loin meilleures lorsque c'est une table SQL Server classique (pas de surcharge liée à Polybase...). On pouvait s'y attendre un peu, mais en tout cas, c'est instructif et cela permet de faire quelques constats...

lundi 23 mars 2020

Geographie française en données spatiales

Par ces longues soirées (de confinement), c'est le moment de réviser sa géographie avec des requêtes SQL... Cette base de données recense les 36000 communes françaises, les départements et les régions. Je l'ai mise à jour à partir des données (publiques) de la poste et j'y ai ajouté les départements et les régions.

Petit jeu géographique :

  • Combien de communes s'appellent Pommiers en France, et combien y en a-t'il en Normandie ?
  • Quelle est la distance à vol d'oiseau entre Caen et Lisieux ?
  • Combien de départements (et combien de communes) comprend la région Normandie ?
  • Quelles est la région dessinée ici ?

 

Lire la suite...

vendredi 13 mars 2020

Restaurer sans le filestream

Une question qui m'a été posée : comment restaurer une base sans son filestream ?

Pour rappel, SQL Server sous Linux n'implémente pas le filestream ni le filetable. Que faire lorsque je dois y restaurer une base qui possède du stockage filestream ?

Lire la suite...

mercredi 11 mars 2020

Webcast : le déploiement d'un cluster Big Data SQL Server 2019

Une nouvelle vidéo sur la chaîne youtube Datafly : c'est un petit retour d'expérience sur le déploiement de mon cluster big data SQL Server 2019. S'appuyant sur Linux (ubuntu) et Kubernetes, on parcourt les principales étapes du déploiement de ma plate-forme de test et quelques commandes de troubleshooting. Pour plus d'informations sur l'architecture des clusters big data de SQL Server 2019, vous pouvez regarder une vidéo précédente de cette même chaîne : https://youtu.be/XvEc7OUbyCs

L'installation d'une plate-forme de ce type n'est pas une mince affaire, surtout on premise : importantes ressources matérielles (4 VM largement dotées en mémoire (56 Go), en CPU (8 cores) et en disque (200 Go)), installation de linux, installation de l'orchestrateur Kubernetes, personnalisation puis déploiement du cluster SQL Server 2019.

Et du temps : d'abord pour tout installer et configurer, avec les problèmes inhérents aux configurations sous linux, il faut quelques jours. Puis pour déployer : avec les dizaines de Go d'images à télécharger et ma bande passante "campagnarde", le déploiement prend quinzaine d'heures. Tout cela avec deux gros quadri-processeurs qui font office de chauffage électrique (en plus bruyant) dans le bureau.

Retour vers le futur aussi : se remettre à la ligne de commande, comme dans les années 80 (vieux souvenirs) !

- page 5 de 19 -