BI experience

13 février 2019
par maryam khiali
0 Commentaires

ola.hallengren.com : plan de maintenance SQL server

Les temps de réponses des bases de données, leurs optimisations, leurs maintenances sont des paramètres, des processes que l’on a besoin de traiter lors de nos projets.

J’avais tenter d’expliquer le fonctionnement et l’audit des indexes et des statistiques dans ce post.

Pour aller plus loin sur ce sujet, je voulais partager les possibilités que nous propose le site https://ola.hallengren.com?

Ce site nous délivre des scripts afin de créer tous les objets (procédures stockées, tables d’administrations, jobs) dont nous avons besoin pour mettre en place le plan de maintenance de nos instances SQL server : voir le lien « MaintenanceSolution.sql ».

Ce site propose également une documentation des options, des paramètres que l’on peut configurer pour s’approprier ces scripts : voir le menu de gauche

Vous pourrez adapter le script « MaintenanceSolution.sql » en fonction de vos besoins :

C’est vraiment pas mal d’être accompagné pour ce genre de tâches…

Si vous avez des tips sur les plans de maintenances SQL server…N’hésitez pas à laisser des commentaires!

13 mars 2018
par maryam khiali
0 Commentaires

Report Server : audit d’utilisation

Dans cet article, j’avais envie de partager une requête simple pour auditer l’utilisation de votre plateforme reportServer :

« select
exe.UserName,
exe.TimeStart,
exe.Format,
cat.Path,
cat.Name
from
[ReportServer].[dbo].[ExecutionLogStorage] exe,
[ReportServer].[dbo].[Catalog] cat
where
cat.ItemID = exe.ReportID  »

Avec ces tables systèmes SSRS, 60 jours de logs sont disponibles par défaut. En vous connectant à l’instance SSRS et en faisant un clique droit> propriétés vous pourrez modifier le nombre de jours assez facilement et le fait qu’il y ait ces logs.

Utilisez vous d’autres requêtes pour bien cerner l’utilisation de votre plateforme de rapports ?

 

 

6 mars 2018
par maryam khiali
0 Commentaires

En quoi cette nouvelle option : Adaptive Query Processing peut m’aider?

Cette nouvelle option présente dans SQL server 2017, nous permet de mettre en place des requêtes plus performantes. Pour ce faire 3 options s’offrent à nous :

  • batch mode adaptive joins
  • batch mode memory grant feedback
  • interleaved execution for multi-statement table valued functions

Pour activer cette option ALTER DATABASE [mon_datawarehouse] SET COMPATIBILITY_LEVEL = 140;

Rappel rapide du fonctionnement d’SQL server sur l’exécution des requêtes :

  • Etape 1 : Liste de divers scénarios de plan d’exécution.
  • Etape 2 : estimation en coût (nb de lignes, en % CPU) de ces divers scénarios => ce coût calculé peut-être faux si les dernières statistiques ne sont pas à jour par exemple. Pour en savoir plus sur ces coûts, voici un petit article sympa
  • Etape 3 : selection du scénario  le plus faible en coût d’exécution
  • Etape 4 : exécution de la requête en fonction de ce plan d’exécution sélectionné

 

Détaillons maintenant chaque option :

le batch mode adaptive joins :

SQL server utilise actuellement 3 algorithmes pour procéder à une jointure :  »nested loop », « merge », et  « hash match ». Pour choisir le plus approprié, SQL server se base sur les coûts estimés.

Grâce à cette nouvelle option voici comment va fonctionner SQL server 2017 : si nb lignes de l’entrée de la jointure  <= au seuil défini par cette option alors « nested loop » sinon « hash match ». Cette analyse est faite dynamiquement lors de l’exécution de la requête.

Note : La jointure  »hash match » est utilisée dans ce cas lorsqu’

  • un index columnstore est présent dans la requête globale
  • ou quand la jointure référence directement la table d’index columnstore

le batch mode memory grant feedback :

Cette option permet de calculer pour chaque requête la mémoire nécessaire à l’exécution de cette dernière et de mettre à jour le  « cached plan » (l’endroit ou les plans d’exécution sont mis en cache pour réutilisation si une requête similaire venait à être exécutée). La gestion de la mémoire nécessaire à l’exécution des requêtes est mieux gérée. Une trop grande allocation mémoire bloquante pour d’autres requêtes ou une allocation mémoire trop juste ralentissant les performances de la requête ne seront plus possibles. Cette option nécessite l’utilisation des « columnstore indexes  »

voici un exemple bien mené pour comprendre avec ou sans cette option

Interleaved execution for multi-statement table valued functions :

Ce genre de fonction existait déjà sur les versions précédentes SQL. Elle a été améliorée dans SQL server 2017 afin d’augmenter son efficacité. Les couts d’exécution sont calculés sur chaque sous requête de la fonction et donc propose un plan d’exécution plus précis et plus performant sur le nombre de lignes à prendre en compte et donc la mémoire à allouée.

Avez vous déjà activées et utilisées ces options?

Voici ma source de données

5 mars 2018
par maryam khiali
0 Commentaires

La puisssance du « real time operational analytics »

Depuis SQL server 2016, Microsoft nous met à disposition un nouveau système d’analyse. Ce système a pour objectif de plugger, en temps réel, un cube directement sur les tables opérationnelles d’une source unique que peut être par exemple l’ERP aussi sous SQL server . Plus besoin, pour ce genre d’analyse opérationnelle de traitement ETL, ni de datawarehouse.

La BI traditionnelle n’en sera pas évincée pour autant car le croisement de divers sources d’informations fait qu’un datawarehouse et des traitements d’agrégations aux préalables seront toujours nécessaires. Ce nouveau système nous permet juste, d’avoir une souplesse en plus, une nouvelle possibilité de satisfaire les demandes opérationnelles de nos utilisateurs.

L’analytique en temps réel utilise principalement les « columnstore index »  modifiables sur une table rowstore. Sur le site de Microsoft cette partie est vraiment bien forumlée : « Le « columnstore index » gère une copie des données pour que les charges de travail OLTP et analytiques soient exécutées sur des copies distinctes des données. Cela réduit l’impact sur les performances de ces deux charges de travail en cours d’exécution en même temps. SQL Server gère automatiquement les modifications d’index pour que les changements OLTP soient toujours à jour pour l’analytique. Grâce à cette conception, il est possible et pratique d’exécuter l’analytique en temps réel sur des données à jour. Cela fonctionne aussi bien pour les tables sur disque que pour les tables optimisées en mémoire. »

Que pensez vous de cette super option?

voici ma source

5 mars 2018
par maryam khiali
0 Commentaires

Peut-on en savoir plus sur le « In memory column store »?

Grâce à un indexe particulier qu’est le « columnstore index », le stockage et le traitement des requêtes est optimisé pour :

  • les chargements  et le stockage en masse : une compression des données 10 fois supérieure à la taille des données non compressées. Ces taux de compression améliorent les performances des requêtes en utilisant moins de mémoire et donc en permettant à SQL Server d’exécuter davantage d’opérations.
  • les requêtes en lecture seule : des requêtes 10 fois plus performantes  en comparaison à un stockage orienté lignes traditionnel

Détails techniques intéressants :

  • le « cluster columnstore index » est modifiable et accompagnera tous les traitements massifs d’insertions, mises à jour  et suppressions.
  • un nouveau mécanisme d’exécution de requête, appelé « exécution en mode batch » a été ajouté à SQL Server pour réduire considérablement l’utilisation de l’UC

Scénarios BI :

Cas où cela peut être intéressant :

  • pour le stockage de grandes « tables de faits » ou « tables de dimensions »
  • pour les requêtes qui utilisent des analyses de table complètes

Cas où cela ne convient pas :

  • pour les requêtes qui effectuent des opérations de recherche de données sur une valeur particulière par exemple.

L’avez vous déjà mis en œuvre? Et dans quel cas?

Voici mes sources :
source 1
source 2