Post on 18-Jul-2020
#JSS2013
Les journées
SQL Server 2013
Un événement organisé par GUSS
#JSS2013
Les journées
SQL Server 2013
Un événement organisé par GUSS
SSAS : Test de montée en charge
avec Visual StudioArnaud Voisin
#JSS2013
Merci à nos sponsors
#JSS2013
WITH MEMBER [measures].[User] AS UserName() SELECT [measures].[User] ON 0 FROM [JSS2013]
Arnaud Voisin
Consultant / Formateur MSBI
6 ans d’expérience à partir de SQL 2000
Arnaud.VOISIN@waisso.com
Blog: http://arnaudvoisin.blogspot.fr
Twitter : @arnaudvoisinSQL
#JSS2013
WAISSO
Base de données :• Audit et expertise
• Optimisation du code
• Tuning de serveur
• Mise en haute-disponibilité
• Projet technique
• Projet d’infrastructure
• Migration
• Délégation de DBA
Décisionnel et Collaboratif : • Audit et expertise technique
• Etude de cadrage
• Création de datamart client
• Intégration MS BI (SSIS, SSAS,
SSRS…)
• Intégration SharePoint
• TMA
CRM et Marketing : • Etude de cadrage
• Cahier des charges
• Développement d’add-
on
• Intégration MS
Dynamics
• Intégration Neolane
• Gestion de la qualité
des données
#JSS2013
Sommaire
Le déploiement de projets SSAS
Méthodologie des tests de performance Architecture de test
Présentation du dispositif de stress tests
#JSS2013
Tests de montée en charge : Pour quoi faire ?
Qualité du
code
Design
Usage
Valider les
exigences de
performance
Architecture
#JSS2013
Faut-il faire confiance à votre développeur ?
J’ai testé sur mon PC, ca
marche impeccable. En
plus il y avait 10 000
lignes.
On peut mettre en PROD
#JSS2013
LE DÉPLOIEMENT DE PROJETS SSAS
Des points de vigilance à prendre en compte
#JSS2013
SSAS est optimisé pour le star schema Il existe des techniques pour
compresser les many-to-many
Le cas des many-to-many
#JSS2013
• Agrégation uniquement sur les
attributs clés
• Sur l’attribut ALL si enable
• Il existe des moyens de
normaliser ses dimensions
• http://pcdimnaturalize.codeple
x.com/
Le cas des Parents-Child
#JSS2013
Les éléments à prendre en compte
• Pas stocké de la même manière
=> Groupe de mesure dédié.
• Pas d’agrégation => Design
d’agrégation
• Stratégie de partitionnement
très importante => Créer une
clé de partitionnement pour
optimiser la distribution et
donc la parallélisation
Exemple de distribution parfaite sans
chevauchement
Le cas des Distinct Count
#JSS2013
La stratégie de
partitionnementS’assurer d’avoir des partitions ni trop grosses (>3Go) ni trop
petites (<200MB)
Le mode de
stockageROLAP + ColumnStore Index xVelocity
MOLAP
HOLAP
Design
d’agrégationDéfinir des designs d’agrégation personnalisés en fonction de la
partition
Le stockage
#JSS2013
• Privilégier le mode manuel
• Une partition sans Slice sera
toujours interrogée.
• En mode ROLAP, il n’y a pas de
mode AUTO
Le partition slicing
#JSS2013
Sécurité niveau
cellule
Vérification du contexte de sécurité sur chaque cellule
Certaines
fonctions
LinkMember, StrToSet,
StrToMember,
StrToValue
Fonctions
utilisateurs
Fonctions VBA
Expressions iif peut devenir cell by cell => dans certains cas préférer le scope assigments
Cell-by-cell evaluation (au lieu du Block computation)
#JSS2013
PRÉSENTATION DU DISPOSITIF DE
STRESS TESTS
#JSS2013
Prérequis
ASQueryGen
ASLoadSim
SSAS Multidim ou
Tabular
Visual Studio
Ultimate
(Team System)
SQL Server
Loadrepository
Outil de génération
de Workload
Injecteur de charge
Système testé
#JSS2013
Choisir le WorkloadExcel PowerPivot SharePoint
InsightsPower
View
Applications
TiercesReporting
ServicesM
DX
Cube SSAS
MD
X
MD
X
MD
X
MD
X
MD
X
Data Profiler
#JSS2013
Variabiliser un work load avec ASQueryGen
Cube
Tuples SetFichier de
configuration
Members SetRequêtes uniquesRequêtes uniques
Requêtes uniquesRequêtes uniques
Requêtes uniques
#JSS2013
WORKLOAD + VARIABILISATION
#JSS2013
• Créé par Corp pour la version 2005
• Disponible sur CodePlex
• Interface ILoaderPlugin pour étendre les
fonctionnalités d’un load test
• Provider ADOMD.NET
• Reader XML
Présentation de ASLoadSim
#JSS2013
MÉTHODOLOGIE DES TESTS DE
PERFORMANCE
#JSS2013
Définir une baseline pour atteindre des objectifs
Baseline
Itération 1
Itération 2
Itération 3
Itération N
Détecter des
problèmes
Temps de réponse (ms)
Temps (J/H)
#JSS2013
0
10
20
30
40
50
60
70
80
90
0 30s 1min 1min30 2min 2min30 3min 3min30 4min 4min30
0
2
4
6
8
10
12
14
Series 1 Series 2
Déterminer la longueur des runs
Cache Warming
Formule : <Nombre de requêtes/fichier> * <nombre de fichiers> * ( <temps de réponse estimé> + <thinktime>)
#JSS2013
• Modèle de charge– Par étape
– En fonction des objectifs
– Constant
• Possibilité de mixer plusieurs tests
Scénario
#JSS2013
Choisir des compteurs à monitorer
CPU IO Mémoire Requêtes
#JSS2013
• Add-in Excel fournis
• 2 types de rapports possibles
– Comparaison
– Tendance
• Possibilité de personnaliser et
sauvegarder les rapports
Analyse des résultats
#JSS2013
Base d’exemple AdventureWorks modifiée
• + de volumétrie 60 000 à 21 000 000
• + partitionnement mensuel des groupes de
mesures
• + alignement du partitionnement
relationnel
• + compression page
#JSS2013
RUN LOAD TEST
#JSS2013
ARCHITECTURE DE TEST
#JSS2013
• AS Load Sim est mono-base nativement.
• Il est possible d’injecter sur plusieurs cubes mais il faut dupliquer le loader ASLoadSim
• Industrialisation possible avec l’utilitaire mstest.exe
Environnement multi cube/database
Load Simulator A(ASWorkloadTool.dll)
Configuration.xml
MDXSourceA1.xml
MDXSourceA2.xml
MDXSourceA10.xml
Load Simulator B(ASWorkloadTool.dll)
Configuration.xml
MDXSourceB1.xml
MDXSourceB2.xml
MDXSourceB20.xml
Analysis Services
Server
CubeA
CubeB
#JSS2013
• Pour que le test soit
valable, il est conseillé
que :
– le CPU utilisé < 70%
– et la ram > 10%
• Pour y arriver, basculez
en architecture
Controller-Agent.
Architecture Controller-Agent
Visual Studio Ultimate
Loadtestrepository
SSAS
Controler
Base relationnel Source
Agents
#JSS2013
Test de montée en charge dans le
Cloud grâce à Visual Studio Online
• A priori, oui mais il va falloir rendre accessibles les fichiers de
Workload, les fichiers de configuration et surtout le cube via
datapump par exemple.
• Contrainte : les rôles ne peuvent pas être testés.
Est-il possible d’utiliser Visual Studio Online pour bencher le cube ?
#JSS2013
Conclusion – flexibilité/souplesse
ADOMDNET Autres Providers
Multidim Tabular
ASSL, DAXASSL, MDX, DMX
#JSS2013
Q & R
#JSS2013
Merci !
#JSS2013#JSS2013