Heim  >  Artikel  >  Datenbank  >  Detaillierte Einführung in MySQLslap-Stresstests für MySQL

Detaillierte Einführung in MySQLslap-Stresstests für MySQL

黄舟
黄舟Original
2017-06-04 11:55:391041Durchsuche

mysqlslap ist ein Stresstest-Tool, das ab Version 5.1.4 offiziell von MySQL bereitgestellt wird. Stresstests werden durchgeführt, indem mehrere gleichzeitige Clients simuliert werden, die auf MySQL zugreifen, und können die Leistungsunterschiede bei gleichzeitigem Stress mehrerer Speicher-Engines in derselben Umgebung gut vergleichen.

mysqlslap muss die folgenden drei Schritte ausführen: <br>1. Erstellen Sie ein Schema, eine Tabelle, Testdaten usw. über eine einzige Verbindung (in MySQL). , Schema Es ist die Datenbank); <br>2. Führen Sie den Lasttest aus, Sie können mehrere gleichzeitige Client-Verbindungen verwenden (<br>Löschen Sie die von und trennen), Verwenden Sie eine einzelne Verbindung.

Die Verwendungssyntax lautet wie folgt: # mysqlslap [Optionen]<br>

Gemeinsame Parameter [Optionen] Detaillierte Beschreibung: <br>--auto-generate-sql, -a generiert automatisch Testtabellen und -daten. Dies bedeutet, dass das vom MySQLslap-Tool generierte SQL-Skript zum Testen des Parallelitätsdrucks verwendet wird. <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-load-type=type Der Typ der Testanweisung. Gibt an, ob es sich bei der zu testenden Umgebung um einen Lesevorgang, einen Schreibvorgang oder eine Mischung aus beiden handelt. Zu den Werten gehören: read, key

, write, upDatum

und gemischt (Standard). <br>--auto-generate-sql-add-auto-increment bedeutet das automatische Hinzufügen der auto_increment-Spalte zur generierten Tabelle, unterstützt ab Version 5.1.18. --only-print--number-char-cols=N, -x N Wie viele Zeichentyp-

Spalten, Standard 1

--number-int-cols=N, -y N Wie viele Spalten vom numerischen Typ sind in der automatisch generierten Testtabelle enthalten, Standard 1-- number -of-queries=N Gesamttest Anzahl der Abfragen (Anzahl gleichzeitiger Abfragen). Kunden × Anzahl der Abfragen pro Kunde)

--query="sql Statement",-q Verwenden Sie ein benutzerdefiniertes Skript, um den Test auszuführen. Sie können beispielsweise ein benutzerdefiniertes Skript aufrufengespeicherte Prozedur

oder SQL-Anweisung zum Ausführen des Tests.

--create="sql-Anweisung" Erstellen Sie die SQL-Anweisung oder Datei der Tabelle

--concurrency=N, -c N stellt den Grad der Parallelität dar, d. h. wie viele Clients simuliert werden, um select auszuführen zur gleichen Zeit. Es können mehrere Werte angegeben werden, wobei Kommas oder der durch den Parameter --delimiter angegebene Wert als Trennzeichen verwendet werden. Beispiel: --concurrency=100.200.500. <br>--engine=engine_name, -e engine_name stellt die zu testende Engine dar. Es können mehrere vorhanden sein, die durch Trennzeichen getrennt sind. Zum Beispiel: --engines=myisam,innodb. # mysqlslap -a -uroot -p123456--iterations=N, -i N Die Anzahl der Iterationen der Testausführung, die angibt, wie oft der Test in verschiedenen gleichzeitigen Umgebungen ausgeführt werden muss. <br>--only-print Druckt nur die Testanweisung, ohne sie tatsächlich auszuführen. --debug-info, -T Gibt Speicher- und CPU-bezogene Informationen aus. <br># mysqlslap -a -c 100 -uroot -p123456Hinweis: <br>Der Testvorgang erfordert das Generieren einer Testtabelle und das Einfügen von Testdaten. Ein MySQLSLAP-Schema wird standardmäßig generiert zuerst gelöscht werden. Mit <br> können Sie den tatsächlichen Testverlauf ausdrucken und nach Abschluss des gesamten Tests bleiben keine Spuren in der Datenbank zurück. # mysqlslap -a -i 10 -uroot -p123456<br>

Beispiele für verschiedene Testparameter (auf -p folgt das Root-Passwort von MySQL):

Demo 2:<br>

Demo 1:

<br>Single-Thread-Test. Was der Test bewirkt hat. # mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb -uroot -p123456

Multithread-Tests. Verwenden Sie –concurrency, um die Anzahl gleichzeitiger Clientverbindungen zu simulieren. Beispielsweise stellen 100 Clients gleichzeitig <br> eine Verbindung zur Datenbank her

.

Iteratives Testen. Wird verwendet, um Tests mehrmals durchzuführen, um den Durchschnitt zu ermitteln. Iterieren Sie beispielsweise zehnmal und ermitteln Sie den Durchschnitt.

Demo 2:<p></p>Testen und vergleichen Sie die Leistung verschiedener Speicher-Engines gleichzeitig: jeweils 500 Parallelität, jeder gleichzeitige Client führt eine Abfrage aus, also insgesamt 500 Abfragen, und 1000 Parallelität, jeder gleichzeitige Client führt eine Abfrage aus, also insgesamt 1000 Abfragen. Aus Gründen der Genauigkeit können Sie den Test mehrmals iterieren: Beide Tests generieren automatisch SQL-Testskripte und iterieren jeweils zehnmal, um den Durchschnitt zu ermitteln. Die Testumgebung umfasst Lese- und Schreibtests, Aktualisierungstests gemischte Tests, sich selbst vergrößernde Felder und die Test-Engine ist innodb. # mysqlslap –uroot –p –concurrency=500 –I 10 –a –auto-generate-sql-type=mixed –auto-generate-sql-add-autoincrement –engine=innodb –number-of- query=500# mysqlslap –uroot –p –concurrency=1000 –I 10 –a –auto-generate-sql-type=mixed –auto-generate-sql-add-autoincrement –engine=innodb –number -of-queries=1000Die zurückgegebenen Ergebnisse lauten wie folgt:

Wie aus den beiden oben genannten Tests ersichtlich ist, verdoppelt sich die Abfragezeit ungefähr, wenn sich das Parallelitätsvolumen von 500 auf 1000 ändert.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in MySQLslap-Stresstests für MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn