outil de test de chargement sql personnalisé

Je voudrais exécuter des tests pour comparer notre application mysql dans plusieurs configurations. Mais je ne veux pas utiliser quelque chose comme les tests syschench ou oltp, car nous avons une logique lourde de procédures stockées. Alors … Je veux tester nos procédures.

Existe-t-il une application / cadre de test que nous pouvons utiliser pour exécuter des requêtes personnalisées (en option – en parallèle) et voir les statistics? Quelque chose comme Siege pour le web? Ce que j'ai déjà trouvé utilise habituellement leurs propres schémas et scénarios de database générés.

Je pourrais requestr à mes développeurs de créer une interface java personnalisée et d'utiliser Siege pour elle, bot ne veut pas append de frais généraux ou affecter des nombres.

Cordialement, Igor.

5 Solutions collect form web for “outil de test de chargement sql personnalisé”

Jmeter peut effectuer un test de charge de database en utilisant JDBC: http://jakarta.apache.org/jmeter/usermanual/build-db-test-plan.html

Je n'ai pas utilisé la fonctionnalité jdbc avant, alors je ne sais pas si elle va gérer vos requêtes complexes.

Vous pouvez suivre les principes généraux de la plupart des moteurs de tests unitaires pour créer un moteur de test d'unité mySQL simple.

Nous construisons quelque chose comme ceci pour MS SQL dans le passé

L'idée était la suivante

1) Nous écrivons les procédures d'essai de l'unité et leur donnons le même nom préfixes comme "test_". Dans MS SQL, nous avons également utilisé des propriétés étendues comme méta-informations pour décrire certains parameters spécifiques des tests externes (comme dans NUnit on peut utiliser différents attributes de test)

2) Nous écrivons une procédure / script qui ouvre un slider, sélectionne à partir du catalogue tous les noms de procédure qui démarre "test_" et exécute chacun d'entre eux dans l'instruction EXEC (@procedure_name). Si le test échoue, la procédure de test devrait générer une erreur.

3) Les résultats de l'exécution du test sont stockés dans une table.

4) Afin d'exécuter le test sur les mêmes données et d'get des résultats prévisibles, nous avons un exemple de database de test que nous avons sauvegardé une fois et restauré à partir de la sauvegarde avant chaque exécution de test

Si vous souhaitez qu'un outil soit livré avec MySQL 5.1, vous pourriez le faire pire qu'essayer MySQL Slap (alias mysqlslap) . Un exemple directement de la documentation:

Fournissez vos propres instructions de création et de requête SQL, avec 50 requêtes de clients et 200 sélectionnées pour chacune d'entre elles:

mysqlslap --delimiter=";" \ --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" \ --query="SELECT * FROM a" --concurrency=50 --iterations=200 

Cela fournit l'option d'exécuter les tests en parallèle – bien que la mise en œuvre du parallélisme à l'aide de plusieurs clients peut ne pas être exactement à votre convenance. Voici une brève description (encore une fois, textuellement):

mysqlslap s'exécute en trois étapes:

  1. Créez un schéma, un tableau et, éventuellement, les programmes stockés ou datatables que vous souhaitez utiliser pour le test. Cette étape utilise une connection client unique.

  2. Exécutez le test de charge. Cette étape peut utiliser de nombreuses connections client.

  3. Nettoyez (déconnectez, déposez la table s'il est spécifié). Cette étape utilise une connection client unique.

Si ce n'est pas exactement à votre goût, vous pouvez soit utiliser un script cron pour triggersr MySQL Slap à un moment précis pour de nombreux users, soit pour plusieurs machines configurées / spécifiées de manière identique, avec des paths réseau identiques vers le server, etc. (ce dernier est très important, car l'parsing comparative devrait éliminer toute divergence possible pour prévenir les conclusions obscures).

Si (comme cela est probable), vous exécutez une version précédente de MySQL, ce lien fournit des informations utiles sur la compilation de la source 5.1 pour 5.0; il n'est probablement plus possible de faire de l'avant.

Voici une procédure de base.

J'aime:

  1. Écrivez un script PHP / Python / Perl pour accéder à la database et exécutez le test et imprimez le résultat au format XML
  2. Utilisez un outil de benchmarking HTTP (httperf ou similaire) pour supprimer la database et save les résultats résultants
  3. Parlez pour les échecs, répétez.

J'ai fini par utiliser SQLIO pour souligner les disques, puis j'ai écrit des requêtes personnalisées pour générer assez de données, puis fais des calculs variés sur de grandes tables et simule une database lourdement chargée mais mal optimisée. J'ai ensuite accéléré le nombre de connections simultanées jusqu'à ce qu'il soit mort.

  • SQL Server 2008 Enterprise Edition - Prise en charge des processeurs Dual X5670
  • Ddd Marco DaHapsTea Da Chamonet Chamonet ChamonetAMMMTMT LasAusTachachachistán Trause DawoTdM DaTea Da MarcoAndFeaMMTTTMTTT DaTMMMTTTMMMTTTTTellesAGMMM
  • Sauvegardes SQL Server 2005 pour les 5 jours précédents sur le disque?
  • Abaisser la priorité d'E / S pour les sauvegardes
  • Comment supprimer un logging lorsque deux tables ont une key étrangère référencée les unes aux autres?
  • Sauvegarde du journal des transactions SQL Server,
  • Azure SQL - Spike de connection soudaine
  • Le file mdf ne peut pas être écrasé lors de la restauration d'une database dans SQL Server
  • Comment désactiver le triggersment qui a tué l'access SQL?
  • L'application MSSQL ne se connecte pas au server de database
  • Les problèmes du tunnel SSH
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.