2009-08-20 5 views
1

Je suis en train de développer une application web qui va accéder et travailler avec de grandes quantités de données dans une base de données MySQL, quelque chose comme un dictionnaire/thesaurus. J'ai besoin de tester les performances de la base de données à mesure que sa taille augmente, donc je sais à quel point chaque requête sera lente dans le futur.Comment mesurer les performances d'une base de données?

Des idées? Comme existe-t-il des outils spécifiques pour vérifier les performances de DB pour une requête particulière, etc?

Répondre

3

Vous pouvez utiliser query profiler pour mesurer l'impact de la quantité de données sur les performances de MySQL.

Et generatedata.com pour générer les données dont vous avez besoin pour tester votre application.

Vous pouvez également tester votre réactivité des applications à l'aide des outils de test HTTP comme:

+0

travail se JMeter avec une application Web hébergé localement? –

+1

Je ne vois rien qui puisse empêcher les gens d'utiliser JMeter sur localhost. – Philippe

+0

On dirait que la réponse définitive jusqu'à ce que nous entendons parler de meilleures méthodes. –

1

un bon outil utiliser ab est celui d'apache, qui est livré en standard avec le serveur apache httpd. Cet outil peut établir plusieurs connexions à un serveur Web et évaluer ses performances. Alors que firebug est un bon moyen de voir dans quel ordre les choses se passent, combien de temps chaque élément prend pour charger, etc., vous ne voyez que l'expérience d'un utilisateur. contre un serveur de test déchargé, cette information ne peut vous emmener que jusqu'à présent. ab simule la connexion de plusieurs utilisateurs et donnera une image plus réaliste de la façon dont une page particulière gère les utilisateurs simultanés.

ce qui me conduit à une limitation dans ab: il ne teste qu'une URL. Je contourne souvent cela en fouettant une page web de test simple qui fait une sélection aléatoire à partir d'une liste d'URL prédéfinies que je veux tester. par exemple: la page de connexion, un résultat de recherche, l'envoi d'un commentaire, etc. ab atteint la page de test, et la page de test appelle simplement l'une des URL de test (éventuellement avec un paramètre aléatoire) et renvoie cette page. De cette manière, vous aurez une meilleure idée de la manière dont votre site gère les utilisateurs simultanés.

PS: votre système d'exploitation est irréfutable. vous devrez vous en rendre compte en fonction de la façon dont votre application est écrite, de la configuration de vos données, de la configuration du serveur Web et du serveur de base de données, etc.

4

Savez-vous quoi, en particulier vous testez ? Mesurer la «performance» est toujours inutile, à moins que vous ne sachiez exactement ce que vous voulez. Par exemple, recherchez-vous une faible latence lors de la récupération des résultats de la requête? Peut-être un débit élevé lors de la récupération de la date? Peut-être vous souciez-vous plus des insertions rapides dans la base de données, et moins sur les résultats rapides de la requête? Peut-être que vous vous souciez de choses différentes sur des tables différentes (en fait, c'est presque toujours le cas).

Mon conseil sera probablement ignoré, mais je vais le dire quand même:

Ne pas optimize avant que vous savez ce que vous voulez.

Ne pas optimiser au fur et à mesure que vous écrivez le code.

Lorsque vous parvenez à optimiser votre base de données, assurez-vous d'optimiser pour les bonnes choses.Utilisez des données réalistes - si vous testez des textes de la taille d'un dictionnaire, ne testez pas avec des données binaires (par exemple).

Quoi qu'il en soit, je me rends compte que vous cherchez probablement une réponse plus technique, mais bon ...

+0

Utile de toute façon ... et comme je l'ai déjà dit, "donc je sais à quel point chaque requête sera lente à l'avenir" –

+0

mais encore une fois - que signifie "lent" dans ce contexte? Mesurez-vous la latence ou le débit? Quoi qu'il en soit, bonne chance avec les tests! – Thomi

+0

Latence en termes de temps nécessaire pour exécuter toutes les requêtes requises pour générer une page Web dynamique? Je parle essentiellement de la forte charge de visiteurs sur un serveur de base de données ... et du temps total que chaque page Web prendra * pour être générée * –

Questions connexes