Maison > Article > base de données > Introduction à l'utilisation de mysqlslap
Mysqlslap est un outil de test de stress officiellement fourni par MySQL à partir de la version 5.1.4. Les tests de stress sont effectués en simulant plusieurs clients simultanés accédant à MySQL et peuvent ainsi comparer les différences de performances de stress simultanées de plusieurs moteurs de stockage dans le même environnement.
mysqlslap comporte les trois étapes suivantes à exécuter : <br>1. Créer un schéma, une table, des données de test, etc., en utilisant une seule connexion (dans MySQL. , schéma C'est la base de données); <br>2. Pour exécuter le test de charge, vous pouvez utiliser plusieurs connexions client simultanées <br>3. Pour nettoyer l'environnement de test (supprimer les données créées, les tables, etc.) la connexion), utilisez une seule connexion.
La syntaxe d'utilisation est la suivante : <br># mysqlslap [options]
Paramètres communs [options] Description détaillée : <br><code><br>--auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力。<br>--auto-generate-sql-load-type=type 测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。取值包括:read,key,write,update和mixed(默认)。<br>--auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持。<br>--number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1<br>--number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1<br>--number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数)<br>--query="sql statement",-q 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。<br>--create="sql statement" 创建表的SQL语句或文件<br>--concurrency=N, -c N 表示并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者--delimiter参数指定的值做为分隔符。例如:--concurrency=100,200,500。<br>--engine=engine_name, -e engine_name 代表要测试的引擎,可以有多个,用分隔符隔开。例如:--engines=myisam,innodb。<br>--iterations=N, -i N 测试执行的迭代次数,代表要在不同并发环境下,各自运行测试多少次。<br>--only-print 只打印测试语句而不实际执行。<br>--debug-info, -T 打印内存和CPU的相关信息。<br>
--auto-generate-sql, -a génère automatiquement des tables et des données de test, indiquant que le script SQL généré par l'outil mysqlslap lui-même est utilisé pour tester la pression de concurrence.
--auto-generate-sql-add-auto-increment signifie l'ajout automatique de la colonne auto_increment à la table générée. Il est 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 Généré automatiquement Combien de colonnes numériques sont incluses dans la table de test, 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=" sql Statement",-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. <br>--create="sql Statement" Créer l'instruction SQL ou le fichier de la table --only-print
--concurrency=N, -c N représente le degré de concurrence, c'est-à-dire le nombre de clients simulés pour exécuter la sélection à 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.
--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.--debug-info, -T Imprimer les informations relatives à la mémoire et au processeur.
Pour des paramètres plus détaillés, veuillez vous référer à la documentation du site officiel :<br>Remarque :
Le processus de test nécessite la génération d'un test et en insérant des données de test, ce mysqlslap peut être généré automatiquement. Un schéma mysqlslap est généré par défaut. S'il existe déjà, il sera d'abord supprimé. Vous pouvez utiliser 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 complet terminé. <br># mysqlslap -a -uroot -p123456
<br><br># mysqlslap -a -c 100 -uroot -p123456
Exemples de différents paramètres de test (-p est suivi du mot de passe root de mysql) : <br><br># mysqlslap -a -i 10 -uroot -p123456
<br>
Démo 1 :Demo 2:<br>
<br># mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb -uroot -p123456
Tests multithread. Utilisez –concurrency pour simuler le nombre de connexions client simultanées. Par exemple, 100 clients se connectent simultanément à la base de données.
<br>
Tests itératifs. Utilisé pour effectuer des tests plusieurs fois pour obtenir la moyenne. Par exemple, répétez 10 fois et prenez la moyenne.
Démo 2 :<p></p>
Testez et comparez les performances de différents moteurs de stockage en même temps :
respectivement 500 simultanéités, chaque client simultané exécute une requête, pour un total de 500 requêtes, et 1000 simultanéités, chaque client simultané exécute une requête, pour un total de 1000 requêtes. Par souci de précision, vous pouvez répéter le test plusieurs fois :<p></p>
Les deux tests génèrent automatiquement des scripts de test SQL, et itèrent 10 fois chacun pour prendre la moyenne. L'environnement de test comprend des tests mixtes de lecture, d'écriture et de mise à jour. Le champ à augmentation automatique et le moteur de test sont innodb. # mysqlslap –uroot –p –concurrency=500 –I 10 –a –auto-generate-sql-type=mixed –auto-generate-sql-add-autoincrement –engine=innodb –number-of- queries=500# mysqlslap –uroot –p –concurrency=1000 –I 10 –a –auto-generate-sql-type=mixed –auto-generate-sql-add-autoincrement –engine=innodb –number -of-queries=1000Les résultats renvoyés sont les suivants :Comme le montrent les deux tests ci-dessus, lorsque la concurrence passe de 500 à 1000, le temps de requête est probablement presque doublé. 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!