Maison  >  Article  >  base de données  >  Explication détaillée des tests de référence MySQL et des outils sysbench

Explication détaillée des tests de référence MySQL et des outils sysbench

coldplay.xixi
coldplay.xixiavant
2020-09-11 17:30:422546parcourir

Explication détaillée des tests de référence MySQL et des outils sysbench

Recommandations d'apprentissage associées : Tutoriel MySQL

Qu'est-ce qu'un test de référence

Les tests de référence des bases de données sont un test quantitatif, reproductible et comparable des indicateurs de performances des bases de données. Tests de référence et tests de résistance Les tests de référence peuvent être compris comme un test de résistance du système. Mais les tests de référence ne se soucient pas de la logique métier et sont plus simples, plus directs et plus faciles à tester. Les données peuvent être générées par des outils et ne nécessitent pas de données réelles, tandis que les tests de résistance prennent généralement en compte la logique métier (telle que l'activité du panier d'achat) et. nécessite des données réelles.

Le rôle du benchmarking

Pour la plupart des applications Web, le goulot d'étranglement de l'ensemble du système est la base de données ; la raison est simple : d'autres facteurs liés aux applications Web, tels que la bande passante du réseau, les nœuds d'équilibrage de charge, les serveurs d'applications (y compris le processeur, la mémoire, les voyants du disque dur, le nombre de connexions). , etc.), le cache, etc. Il est facile d'obtenir des améliorations de performances grâce à l'expansion horizontale (communément appelée ajout de machines). Pour MySQL, en raison des exigences de cohérence des données, la pression liée à l'écriture des données dans la base de données ne peut pas être dispersée en ajoutant davantage de machines, bien que la pression puisse être réduite grâce à la mise en cache préalable (Redis, etc.), à la séparation lecture-écriture et aux sous-mises en cache ; bases de données et tables, mais par rapport à l'expansion horizontale d'autres composants du système, elle est trop restreinte.

Le rôle des tests de référence de base de données est d'analyser les performances de la base de données sous la configuration actuelle (y compris la configuration matérielle, le système d'exploitation, les paramètres de la base de données, etc.), découvrant ainsi le seuil de performances de MySQL et ajustant la configuration en fonction des exigences réelles du système. .

Indicateurs de référence

Les indicateurs de base de données courants incluent :

TPS/QPS : mesure le débit. Temps de réponse : y compris le temps de réponse moyen, le temps de réponse minimum, le temps de réponse maximum, le pourcentage de temps, etc. La référence en pourcentage de temps est plus importante, comme le temps de réponse maximum des 95 premiers % des demandes. . Concurrence : nombre de requêtes de requête traitées simultanément.

Classification des tests de référence

Il existe deux idées pour évaluer MySQL :

  • Tests d'évaluation pour l'ensemble du système : tests via des requêtes http, telles que via des navigateurs, des applications ou postman et d'autres outils de test. L'avantage de cette solution est qu'elle permet de mieux cibler l'ensemble du système et que les résultats des tests sont plus précis. L'inconvénient est que la conception est complexe et difficile à mettre en œuvre.
  • Benchmark MySQL uniquement : les avantages et les inconvénients sont exactement à l'opposé du test de l'ensemble du système.

Lors de l'analyse comparative de MySQL, des outils spéciaux sont généralement utilisés, tels que mysqlslap, sysbench, etc. Parmi eux, sysbench est plus polyvalent et puissant que mysqlslap, et plus adapté à Innodb (car il simule de nombreuses fonctionnalités d'Innodb IO. Ce qui suit décrit comment utiliser sysbench pour les tests de référence).

introduction à Sysbench

sysbench est un outil de test de référence multiplateforme qui prend en charge le multi-threading et plusieurs bases de données. Il comprend principalement les tests suivants :

 ; 1. Performances du processeur 2. Performances des E/S du disque 3. Performances du planificateur 4. Allocation de mémoire et vitesse de transmission 5. Performances des threads POSIX 6. Performances de la base de données (test de référence OLTP) 7. Cet article présente principalement le test des performances de la base de données.

installation de Sysbench

L'environnement utilisé dans cet article est CentOS 6.5 ; les méthodes d'installation sur d'autres systèmes Linux sont similaires. La version MySQL est 5.6.

1.下载解压
wget https://github.com/akopytov/sysbench/archive/1.0.zip -O "sysbench-1.0.zip"
unzip sysbench-1.0.zip
cd sysbench-1.0

2.安装依赖
yum install automake libtool –y

3.安装 安装之前,确保位于之前解压的sysbench目录中。
./autogen.sh
./configure
export LD_LIBRARY_PATH=/usr/local/mysql/include 
#这里换成机器中mysql路径下的include
make
make install

4.安装成功
[[email protected] sysbench-1.0]# sysbench --version
sysbench 1.0.9

syntaxe sysbench

Exécutez sysbench –help pour voir l’utilisation détaillée de sysbench. La syntaxe de base de sysbench est la suivante :

sysbench [options]... [testname] [command]

Ce qui suit décrit les paramètres et commandes couramment utilisés en utilisation réelle. La commande

1.command est la commande qui doit être exécutée par sysbench, y compris la préparation, l'exécution et le nettoyage. Comme son nom l'indique, préparer consiste à préparer les données à l'avance pour les tests, exécuter consiste à. exécuter des tests formels et le nettoyage consiste à nettoyer la base de données une fois le test terminé.

2.testname testname spécifie le test à effectuer, dans l'ancienne version de sysbench, vous pouvez spécifier le script de test via le paramètre --test dans la nouvelle version ; test Le paramètre a été déclaré obsolète Vous pouvez spécifier le script directement sans utiliser --test.

Par exemple, les deux méthodes suivantes ont le même effet :

sysbench --test=./tests/include/oltp_legacy/oltp.lua
sysbench ./tests/include/oltp_legacy/oltp.lua

Le script utilisé lors des tests est un script Lua. Vous pouvez utiliser le script fourni avec sysbench ou le développer vous-même. Pour la plupart des applications, l'utilisation des scripts fournis avec sysbench est suffisante. Dans différentes versions de sysbench, l'emplacement du script lua peut être différent. Vous pouvez utiliser la commande find dans le chemin de sysbench pour rechercher oltp.lua. P.S. : La plupart des services de données sont de type oltp. Si vous ne comprenez pas ce qu'est oltp, il y a de fortes chances que votre service de données soit de type oltp.

3.options Il existe de nombreux paramètres pour sysbench, les plus couramment utilisés incluent : Paramètres des informations de connexion MySQL :

1.--mysql-host : nom d'hôte du serveur MySQL, par défaut localhost ; si vous utilisez localhost sur cette machine et qu'une erreur est signalée, indiquant que vous ne pouvez pas vous connecter au serveur MySQL, vous devriez pouvoir modifier l'adresse IP de votre machine. 2.--mysql-port : port du serveur MySQL, par défaut 33063.--mysql-user : nom d'utilisateur 4.--mysql-password : mot de passe

Paramètres d'exécution MySQL :

    1.--oltp-test-mode:执行模式,包括simple、nontrx和complex,默认是complex。simple模式下只测试简单的查询;nontrx不仅测试查询,还测试插入更新等,但是不使用事务;complex模式下测试最全面,会测试增删改查,而且会使用事务。可以根据自己的需要选择测试模式。2.--oltp-tables-count:测试的表数量,根据实际情况选择3.--oltp-table-size:测试的表的大小,根据实际情况选择4.--threads:客户端的并发连接数5.--time:测试执行的时间,单位是秒,该值不要太短,可以选择1206.--report-interval:生成报告的时间间隔,单位是秒,如10

   sysbench使用举例

    在执行sysbench时,应该注意:

    1.尽量不要在MySQL服务器运行的机器上进行测试,一方面可能无法体现网络(哪怕是局域网)的影响,另一方面,sysbench的运行(尤其是设置的并发数较高时)会影响MySQL服务器的表现。2.可以逐步增加客户端的并发连接数(--thread参数),观察在连接数不同情况下,MySQL服务器的表现;如分别设置为10,20,50,100等。3.一般执行模式选择complex即可,如果需要特别测试服务器只读性能,或不使用事务时的性能,可以选择simple模式或nontrx模式。4.如果连续进行多次测试,注意确保之前测试的数据已经被清理干净。

   下面是sysbench使用的一个例子:

   1.准备数据

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 prepare

    其中,执行模式为complex,使用了10个表,每个表有10万条数据,客户端的并发线程数为10,执行时间为120秒,每10秒生成一次报告。 

   2.执行测试 将测试结果导出到文件中,便于后续分析。

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=100000 --threads=10 --time=120 --report-interval=10 run >> /home/test/mysysbench.log

   3.清理数据 执行完测试后,清理数据,否则后面的测试会受到影响。

sysbench ./tests/include/oltp_legacy/oltp.lua --mysql-host=192.168.10.10 --mysql-port=3306 --mysql-user=root --mysql-password=123456 cleanup

   测试结果

    测试结束后,查看输出文件,如下所示:   

Parmi elles, les informations les plus importantes pour nous comprennent : les requêtes : le nombre total de requêtes et les transactions qps : le nombre total de transactions et de tps Latence-95e percentile : le temps de réponse maximum des 95 premiers % des requêtes, dans ce cas il est de 344 millisecondes, ce délai est très important, car les performances du serveur MySQL que j'utilise sont très mauvaises, cette valeur est absolument inacceptable dans un environnement formel ;

Suggestion

Voici quelques suggestions pour utiliser sysbench.

1. Avant de commencer le test, vous devez d'abord clarifier : devez-vous utiliser un test de référence pour l'ensemble du système, un test de référence pour MySQL, ou les deux. 2. Si vous avez besoin de comparer MySQL, vous devez également clarifier les exigences de précision : que vous ayez besoin d'utiliser des données réelles de l'environnement de production ou d'utiliser des outils pour les générer, la première solution est plus lourde à mettre en œuvre ; . Si vous souhaitez utiliser des données réelles, essayez d’utiliser toutes les données plutôt qu’une partie des données. 3. Les tests de référence doivent être effectués plusieurs fois pour être significatifs. 4. Lors des tests, vous devez faire attention à l'état de la synchronisation maître-esclave. 5. Le test doit simuler des situations multithread. Les situations monothread ne peuvent pas seulement simuler une efficacité réelle, mais ne peuvent pas non plus simuler des situations de blocage ou même de blocage.

Si vous souhaitez en savoir plus sur la programmation, faites attention à la rubrique Formation php !

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer