Maison > Article > base de données > Introduction détaillée aux tests de résistance mysqlslap mysql
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. Exécutez le test de charge, vous pouvez utiliser plusieurs connexions client simultanées <br>3. Nettoyer l'environnement de test (supprimer les données, tables, etc. créées par . 🎜> et dé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,<a href="http://www.php.cn/wiki/1051.html" target="_blank">key</a>,write,up<a href="http://www.php.cn/wiki/1255.html" target="_blank">date</a>和mixed(默认)。<br>--auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持。<br>--number-char-cols=N, -x N 自动生成的测试表中包含多少个<a href="http://www.php.cn/code/6739.html" target="_blank">字符类型</a>的列,默认1<br>--number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1<br>--number-of-queries=N 总的测试<a href="http://www.php.cn/php/php-tp-demand.html" target="_blank">查询</a>次数(并发客户数×每客户查询次数)<br>--query="sql statement",-q 使用自定义脚本执行测试,例如可以调用自定义的一个<a href="http://www.php.cn/code/12179.html" target="_blank">存储过程</a>或者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-<a href="http://www.php.cn/wiki/1362.html" target="_blank">print</a> 只打印测试语句而不实际执行。<br>--debug-info, -T 打印内存和CPU的相关信息。
--auto-generate-sql, -a génère automatiquement des tables et des données de test, ce qui signifie utiliser le script SQL généré par l'outil mysqlslap pour tester la pression de concurrence.
, par défaut 1--number-int-cols=N, -y N Combien de colonnes de type numérique sont incluses dans la table de test générée automatiquement, par défaut 1-- number -of-queries=N Test total nombre de requêtes
(nombre de requêtes simultanées clients × Nombre de requêtes par client)--query="sql Statement",-q Utilisez un script personnalisé pour exécuter le test, par exemple, vous pouvez en appeler un personnaliséprocédure stockée
ou instruction SQL pour exécuter le test.--create="sql Statement" Créer l'instruction SQL ou le fichier de la table <br>--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. # mysqlslap -a -uroot -p123456
--engine=engine_name, -e engine_name représente le moteur à tester, il peut y en avoir plusieurs, séparés par des séparateurs. Par exemple : --engines=myisam,innodb. <br>--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. <br>--debug-info, -T Imprimer les informations relatives à la mémoire et au processeur. # mysqlslap -a -c 100 -uroot -p123456
<br>Remarque : <br>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. S'il existe déjà, il le sera. être supprimé en premier. Vous pouvez utiliser # mysqlslap -a -i 10 -uroot -p123456
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>
Exemples de différents paramètres de test (-p est suivi du mot de passe root de mysql) : Demo 2:<br>
Démo 1 :<br># mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb -uroot -p123456
Test mono-thread. Ce que le test a fait.
<br>
Tests multithread. Utilisez –concurrency pour simuler le nombre de connexions client simultanées. Par exemple, 100 clients simultanément
Démo 2 :
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, de mise à jour, des champs à croissance automatique et le moteur de test est 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 le volume de concurrence passe de 500 à 1000, le temps de requête est approximativement 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!