Cet article vous apporte une introduction détaillée aux tests de stress du cluster MySQL. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
test de stress mysql
mysql est livré avec un outil de test de stress appelé mysqlslap, qui effectue des tests de stress en simulant plusieurs clients simultanés accédant à MySQL, et peut bien comparer plusieurs La différence dans les performances de pression de concurrence du stockage moteurs dans le même environnement. Les options disponibles peuvent être obtenues via mysqlslap –help Voici quelques paramètres principaux Pour des instructions plus détaillées, reportez-vous au manuel officiel. S'il s'agit de MySQL fourni avec le système ou s'il est installé à l'aide du package RPM, le package client MySQL contient l'outil mysqlslap. (Cours recommandés : Tutoriel MySQL)
Introduction à l'environnement de test :
Deux machines virtuelles avec séparation en lecture et écriture MySQL 2G
La syntaxe d'utilisation est la suivante suit :
# mysqlslap [options]
Paramètres communs [options] Description détaillée :
--auto-generate-sql, -a génère automatiquement des tables et des données de test, indiquant l'utilisation de l'outil mysqlslap lui-même. Script SQL généré pour tester le stress de concurrence.
--auto-generate-sql-load-type=type Le type d'instruction de test. Indique si l'environnement à tester est une opération de lecture, une opération d'écriture ou un mélange des deux. Les valeurs incluent : lecture, clé, écriture, mise à jour et mixte (par défaut).
--auto-generate-sql-add-auto-increment signifie l'ajout automatique de la colonne auto_increment à la table générée, pris en charge à partir de la version 5.1.18.
--number-char-cols=N, -x N Combien de colonnes de types de caractères sont incluses dans la table de test générée automatiquement, par défaut 1
--number-int-cols=N , -y N Combien de colonnes numériques sont incluses dans la table de test générée automatiquement, par défaut 1
--number-of-queries=N Nombre total de requêtes de test (nombre de clients simultanés × nombre de requêtes par client )
--query=name,-q Utilisez un script personnalisé pour exécuter le test. Par exemple, vous pouvez appeler une procédure stockée personnalisée ou une instruction SQL pour exécuter le test.
--create-schema représente le nom de la bibliothèque de tests personnalisée et le schéma de test. Le schéma dans MySQL est également la base de données.
--commint=N Combien de DML doivent être soumis une fois.
--compress, -C Si le serveur et le client prennent en charge la compression, compressez les informations à transmettre.
--concurrency=N, -c N représente le degré de concurrence, c'est-à-dire le nombre de clients simulés pour exécuter select en même temps. Plusieurs valeurs peuvent être spécifiées, en utilisant des virgules ou la valeur spécifiée par le paramètre --delimiter comme séparateur. Par exemple : --concurrency=100 200 500.
--engine=engine_name, -e engine_name représente le moteur à tester. Il peut y avoir plusieurs moteurs, séparés par des séparateurs. Par exemple : --engines=myisam,innodb.
--iterations=N, -i N Le nombre d'itérations d'exécution du test, qui représente le nombre de fois que le test doit être exécuté dans différents environnements simultanés.
--only-print imprime uniquement l'instruction de test sans réellement l'exécuter.
--detach=N Déconnectez-vous et reconnectez-vous après avoir exécuté N instructions.
--debug-info, -T Imprimer les informations relatives à la mémoire et au processeur.
Remarque :
Le processus de test nécessite de générer une table de test et d'insérer des données de test. Ce mysqlslap peut être généré automatiquement. Un schéma mysqlslap est généré par défaut. supprimé en premier. Vous pouvez utiliser --only-print pour imprimer le processus de test réel, et aucune trace ne sera laissée dans la base de données une fois le test terminé.
mysqlslap -a -c 150 -i 10 -uroot -proot1234 Lors du test du nombre de connexions MySQL à 150
Lorsque le nombre de concurrences du test de résistance a atteint 200, la connexion s'est effondrée
Exemple de test :
Test monothread.
# mysqlslap -a -uroot -proot1234
Tests multithread, test de concurrence.
# mysqlslap -a -c 100 -uroot -proot1234
Lorsque le nombre de concurrence atteint 100, le temps de requête de recherche est supérieur à 1 s
Tests itératifs. Utilisé pour effectuer des tests plusieurs fois pour obtenir une moyenne.
# mysqlslap -a -i 10 -uroot -proot1234
Testez et comparez les performances de différents moteurs de stockage en même temps :
# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb -uroot -proot1234
Exécuter un test avec 50 et 100 simultanéités respectivement , exécutez 1000 requêtes au total :
Il est évident que les performances de la requête innodb sont meilleures
# mysqlslap -a --concurrency=50,100 --number-of -requêtes 1000 -uroot -proot1234
50 et 100 simultanéités obtiendront respectivement un résultat de test (Benchmark). Plus il y a de simultanéité, plus il faudra de temps pour exécuter toutes les requêtes. Par souci de précision, vous pouvez répéter le test plusieurs fois :
# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 -uroot -proot1234
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!