Mini benchs et évaluations d'impact (1/3)

L’objectif de cette série d’articles est double, je souhaite d’une part partager avec vous l’utilisation de l’outil « Swingbench » que je pratique depuis plusieurs années et qui permet de réaliser rapidement et simplement des mini benchs sur les bases de données et d’autre part d’évaluer quantitativement l’impact de deux fonctionnalités importantes apparues depuis la version 10G et qui sont: l’utilisation des « flashback logs » pour réaliser des « flashback database » et la fonctionnalité de « block change tracking » pour l’amélioration des sauvegardes incrémentales. Trois articles sont prévus :

  • Ce premier article décrira comment  mettre en œuvre swingbench et les différentes possibilités qu’il procure.
  • Le second de la série concernera l’impact de l’utilisation des « flashback logs » sur les performances (évaluer avec « Swingbench »).
  • Le dernier sera dédié à l’impact de l’utilisation de « bloc change tracking » la aussi par rapport aux performances de la base de données.

Swingbench

Créé, développé  et maintenu par Dominic Giles consultant depuis de nombreuses années chez Oracle UK, il met à disposition cet outil sur son site depuis 2005, merci à lui. C’est un générateur de charge conçu pour stresser des base de données dans leur version 9i, 10g ou 11g,  il est développé en java et peut donc fonctionner sur un grand nombre de plateformes.
Il est fourni avec deux scénarios de tests nommés « Order Entry » et « Circle »

  • Le premier est dérivé du schéma OE d’exemple fourni en version 9i avec la base, et simule une application de prise de commandes. Il peut tourner sans fin et travaille sur un jeu de petites tables générant contentions et accès mémoire.
  • Le second se veut représenter l’activité d’un opérateur de télécommunications, il nécessite un jeu de données en entrée et se déroulera tant que ce jeu ne sera pas complétement  consommé.

Une API est fournie permettant de développer et d’intégrer ses propres scénarios.
L’outil est découpé entre un générateur un coordinateur et une interface de visualisation pour permettre son utilisation sur les infrastructures RAC clusters.
L’auteur propose sur son site d’autres outils comme « Datagenerator » pour générer rapidement du contenu aléatoire dans des tables, « Trace Analyzer » pour visualiser graphiquement le contenu des fichiers traces et qui pourra faire l’objet d’un prochain article ou « CPU Monitor » pour centraliser graphiquement les consommations CPU de plusieurs serveur (via ssh)

Téléchargement et Installation

L’objectif ici est d’installer l’outil sur mon laptop sous windows XP  pour aller ensuite stresser des bases de données 11G , qui seront localisées soit sur une VM VMWARE OEL  (Oracle Enterprise Linux) sur le même laptop,  soit sur un serveur VM Oracle de démonstration.
Dominic Giles met gracieusement le produit à disposition et vous le trouverez ici dans la dernière version unix/windows. C’est un fichier .zip qu’il suffit d’extraire dans une répertoire dédié, par exemple dans mon cas D:appswingbench
Il faut noter que le .zip ne contient pas de JDK , ni de client Oracle, il faut donc

  1. Qu’il y ait un client Oracle (voir une distribution complète de base de données) installé sur votre poste
  2. Mettre à jour les variables dans le fichier swingbenchenv.bat (swingbench.env pour unix), pour définir la localisation du JDK , du répertoire d’installation de swingbench et du répertoire d’installation du client Oracle:
REM Set the following to reflect the root directory of your Java installation
set JAVAHOME=D:apporacleSQLsqldeveloperjdkjre
REM Set the following to the directory where you installed swingbench
set SWINGHOME=D:appswingbench
REM If you don't have the ORACLE_HOME environment variable set uncomment the following and change it to reflect your environment
set ORACLE_HOME=D:apporacledb11G

Initialisation du scenario « Order Entry »

Un assistant d’installation est fourni pour chaque scenario sous l’arborescence %SWINGHOME%winbin, ainsi que le fichier de paramétrage correspondant :

  • oewizard.bat  et oemwizard.xml pour « Order Entry »
  • ccwizard.bat et ccwizard.xml  pour « Circle »

L’assistant permet la création du schéma OE et du ou des tablespaces associés.
Pour lancer l’initialisation du scenario « Order Entry » , depuis une fenêtre DOS entrez « oewizard » :


Entrer ensuite correctement la chaine de connexion, l’utilisateur et le mot de passe :

Vous pouvez alors choisir, le nom de l’utilisateur le tablespace associé pour les données et les indexes ainsi que le nom des fichiers associés, attention à ne pas cocher l’option “Use partitionning” si elle n’est pas présente dans votre base de données, sous peine de générer une erreur :

Ainsi que la volumétrie que vous allez associer aux tests :

Ce qui termine vos choix, et vous avez une estimation de la durée de la création de vos données de test :

Et déclenche les opérations dès que vous cliquez sur “Finish” :

Si vous avez un problème lors de l’installation n’hésitez pas à supprimer le schéma via l’assistant avant de relancer complètement  le processus.
Si vous en avez assez de remplir  les champs, après plusieurs essais, les valeurs par défaut proviennent du fichier  de configuration xml correspondant.
A la fin de l’installation, après l’affichage de la boite de dialogue « Order entry schema created » ,  dans mon environnement le bouton « Finish » ne prend pas le focus, n’hésitez pas à  terminer en cliquant sur « Cancel ».

Déroulement du tests et résultat

Pour lancer le scénario, il faut ouvrir une fenêtre DOS sous le répertoire %SWINGHOME%winbin et exécuter « swingbench »  , on peut stocker les résultats dans un fichier xml grace à l’option –r
Voici la fenêtre complète après le lancement :

Dans le détail , la section “User Details” permet de définir la chaine de connexion et l’utilisateur ainsi que l’option de collecter ou non des statistiques pendant le déroulement du bench :

La section “Load” permet de définir le nombre de connexions et les différents délais, la durée totale du bench, ainsi que le moment de prise et d’arrêt des statistiques, ce qui permet de conserver les mêmes critères entre les différentes tentatives :

La section “Transactions” valide les requêtes à exécuter et permet répartir leur poids les unes par rapport aux autres :

Enfin c’est dans la fenêtre principale que s’affichent dynamiquement les résultats, voici les différents types de graphique possible.
Nombre d’opérations par minute pour chaque requête exécutée :

Le taux transactionnel :

Les temps de réponse pour chacune des requêtes (min,moyenne et max) :

Le graphique de synthèse permet de voir rapidement quelles sont les performances atteintes (les courbes pour le CPU et les IO ne sont pas toujours disponibles, elles dépendent de la plateforme) :

Si vous estimez ne pas avoir besoin d’autant de graphiques, il existe une option plus légère nommée “minibench”.
Cette interface graphique simplifiée ne permet pas de modifier le paramétrage, il faut donc au préalable configurer le fichier swingconfig.xml ou appelé une configuration particulière par l’option -c sur la ligne de commande:

d:>minibench -c swingconfig_easy11.xml


Enfin si vous ne possédez aucune interface graphique (serveur linux sans graphisme), vous pouvez utilisez la commande charbench comme l’exemple suivant:

D:>charbench -c swingconfig_easy11.xml -a -r results_easy11_04.xml
Author : Dominic Giles
Version : 2.3.0.343
Results will be written to results_easy11_04.xml.
Time Users TPM TPS
11:16:41 15 1427 138

L’affichage des résultats s’effectue en dynamique sur la dernière ligne tant que le test se déroule.
Voila qui termine la présentation de cet outil. Dans le prochain article de la série , je vous présenterai les résultats de mon test de référence et de l’écart relevé lorsque l’on utilise la fonctionnalité de “flashback log” , à très bientôt …