7
votes

Comment tester la vitesse de requête MySQL, avec moins d'incohérences?

J'ai besoin d'un moyen simple de tester les requêtes SQL pour la vitesse. Je ne suis pas inquiet pour les différences matérielles, j'ai essentiellement besoin d'un numéro relatif.

C'est ce que j'ai fait avec PHP (son flou, mais des œuvres): P>

query_cache_size=0


0 commentaires

4 Réponses :


8
votes

Essayez d'utiliser Sélectionner une référence (fois, requête)

Plus d'informations: http: //dev.mysql .Com / Doc / Refman / 5.0 / fr / Information-Fonctions.html # Function_benchmark


1 commentaires

Seules les expressions scalaires peuvent être utilisées. Bien que l'expression puisse être une sous-requête, elle doit renvoyer une seule colonne et au plus une rangée unique. Par exemple, la référence (10, (SELECT * de T)) échouera si le tableau T a plusieurs colonnes ou plus d'une rangée.



0
votes

Vous pouvez utiliser des connexions persistantes dans votre classe. Un pconnect réutilisera la connexion et tiendrait compte de ce type de décalage.


0 commentaires

4
votes

Votre première requête peut être plus lente car MySQL frappe réellement le disque sur la première requête et non sur la seconde.

Votre système d'exploitation peut mettre en cache des fichiers en mémoire tels qu'ils sont lus; En conséquence, les lectures ultérieures peuvent ne pas avoir besoin de toucher le disque et reviendront beaucoup plus rapidement.

En règle générale, j'exécute généralement une requête plusieurs fois et cherche la cohérence. Plus souvent qu'autrement, la première exécution prendra plusieurs fois plus longtemps, tandis que le 2e 3ème et 4ème prennent à peu près au même temps. Ces exécutions ultérieures sont probablement plus représentatives du type de performance que vous verrez sur un système de production réel - puisque votre base de données de production devrait conserver ces données dans le cache du système d'exploitation, tandis que votre système DEV est rarement accédé.

À la fin, lorsqu'il s'agit de la performance de la requête, vous devez simplement lui donner une passe rapide dans le développement et surveiller le journal de requête lent dans la production pour voir quelles requêtes vraiment besoin de travail.

En ce qui concerne les questions de fonctionnement de la performance, prenez plusieurs échantillons et utilisez la médiane. Mais dans la pratique, cela ne sera pas terriblement représentatif des problèmes de performance réels que vous rencontrez dans la production.


0 commentaires

4
votes

supposons que:

  1. Vous n'utilisez pas de connexion persistante
  2. La base de données installée sur le serveur où les statistiques sont effectuées (pas de connexion réseau)
  3. Personne d'autre utilise la base de données (verrouille de rangée / table)
  4. Aucun autre processus lourd n'est en cours d'exécution
  5. etc ....

    Si vous voulez vraiment comparer votre requête, vous devez procéder comme suit: xxx

    alors vous exécutez la requête 2-3 fois dans une boucle (Pour "réchauffer" le serveur).

    et seulement alors: xxx

    et voilà !! :)))

    BTW, la vitesse de requête est l'un des paramètres à lire. Apprenez à lire les informations très précieuses renvoyées par Afficher le statut et expliquer ... . Ce sera beaucoup mieux.

    Voici un lien que vous allez adorer: http: // www .xaprb.com / Blog / 2006/10/12 / How-to-Profile-A-Query-in-MySQL /

    Profitez. :)


0 commentaires