2016-03-09 3 views
-2

J'ai une requête SQL assez compliquée (avec plusieurs jointures et xrefs) qui fonctionne bien sur le petit ensemble de données que j'ai dans mes tables de base de données. Ce que je dois faire est de tester pour voir comment cette requête fonctionnerait si l'ensemble de données était sensiblement plus grand (peut-être des dizaines de milliers d'enregistrements). Quel serait le meilleur moyen d'accomplir cela? Toute suggestion sera appréciée.Test SQL requête pour l'évolutivité sans avoir beaucoup de données dans les tables de base de données

+1

Des dizaines de milliers d'enregistrements ne sont pas très gros ... Des dizaines de milliers d'individus sont extrêmement petits. – Siyual

+0

Il n'y a aucun moyen de tester sans données. Mais * des dizaines de milliers * ne devrait poser aucun problème pour un optimiseur décent, pour moi * large * commence à un milliard de lignes :-) – dnoeth

Répondre

1

Il y a des options:

  • test sur une grande base de données réaliste.
  • Simulation d'une base de données volumineuse: vous pouvez mettre à jour les statistiques de la base de données dans les vues SYSSTAT (voir here for all catalog views). En définissant les statistiques sur quelque chose qui imiterait votre grande base de données, vous pourriez tester la façon dont les plans de requête changent (ou non). Cela ne vous donnera pas de chiffres de performance, seulement des estimations sur les coûts de requête et j'espère une idée de la façon dont les requêtes vont fonctionner.
+1

Si votre base de données de production a la même structure et contient plus de données, db2look pourrait être utilisé pour extraire des statistiques et copiez-le sur votre système de test. Découvrez l'option "-m" de db2look. – MichaelTiefenbacher

0

Vous ne pouvez pas le tester de façon réaliste à moins que le caoutchouc ne rencontre la route. Je pense que vous n'avez actuellement pas un volume de données suffisant, donc vous vous demandez si la requête fonctionnerait bien si elle venait à ce volume. C'est une véritable préoccupation. Je suis d'accord avec data_henrik que vous devriez tester sur une grande base de données réaliste. Je ne suis pas d'accord pour faire semblant de simuler un grand ensemble de données en mettant à jour les statistiques.

Votre base de données est précédée d'une application à partir de laquelle les données sont générées? Si oui, je vous suggère d'utiliser un framework de test de charge (il y en a beaucoup disponible gratuitement) pour générer du trafic vers votre application afin que vous puissiez ensemencer votre base de données avec des enregistrements où vous pouvez tester votre requête.