Dieser Artikel bietet Ihnen eine detaillierte Einführung in MySQL-Cluster-Stresstests. Ich hoffe, dass er Ihnen als Referenz dienen wird.
MySQL-Stresstest
MySQL wird mit einem Stresstest-Tool namens mysqlslap geliefert, das Stresstests durchführt, indem es mehrere gleichzeitige Clients simuliert, die auf MySQL zugreifen, und mehrere vergleichen kann. Der Unterschied in der Parallelitätsdruckleistung des Speichers Motoren in der gleichen Umgebung. Verfügbare Optionen können über mysqlslap –help abgerufen werden. Ausführlichere Anweisungen finden Sie im offiziellen Handbuch. Wenn MySQL mit dem System geliefert wird oder mit dem RPM-Paket installiert wird, verfügt das MySQL-Client-Paket über das Tool mysqlslap. (Empfohlene Kurse: MySQL-Tutorial)
Einführung in die Testumgebung:
Zwei virtuelle Maschinen mit 2G-MySQL-Lese- und Schreibtrennung
Die Verwendungssyntax ist wie folgt folgt:
# mysqlslap [Optionen]
Gemeinsame Parameter [Optionen] Detaillierte Beschreibung:
--auto-generate-sql, -a generiert automatisch Testtabellen und Daten, Zeigt an, dass das Tool mysqlslap selbst verwendet wird. Generiertes SQL-Skript zum Testen der Parallelitätsbelastung.
--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: Lesen, Schlüssel, Schreiben, Aktualisieren und gemischt (Standard).
--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.
--number-char-cols=N, -x N Wie viele Zeichentypspalten sind in der automatisch generierten Testtabelle enthalten, Standard 1
--number-int-cols=N , -y N Wie viele numerische Spalten sind in der automatisch generierten Testtabelle enthalten, Standard 1
--number-of-queries=N Gesamtzahl der Testabfragen (Anzahl gleichzeitiger Kunden × Anzahl der Abfragen pro Kunde). )
--query=name,-q Verwenden Sie ein benutzerdefiniertes Skript, um den Test auszuführen. Sie können beispielsweise eine benutzerdefinierte gespeicherte Prozedur oder SQL-Anweisung aufrufen, um den Test auszuführen.
--create-schema stellt den Namen der benutzerdefinierten Testbibliothek und das Testschema dar. Das Schema in MySQL ist auch die Datenbank.
--commint=N Wie viele DMLs sollten einmal übermittelt werden.
--compress, -C Wenn sowohl Server als auch Client die Komprimierung unterstützen, komprimieren Sie die zu übergebenden Informationen.
--concurrency=N, -c N stellt den Grad der Parallelität dar, das heißt, wie viele Clients simuliert werden, um Select gleichzeitig auszuführen. 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.
--engine=engine_name, -e engine_name stellt die zu testende Engine dar. Es können mehrere Engines vorhanden sein, die durch Trennzeichen getrennt sind. Zum Beispiel: --engines=myisam,innodb.
--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.
--only-print druckt nur die Testanweisung, ohne sie tatsächlich auszuführen.
--detach=N Trennen Sie die Verbindung und stellen Sie die Verbindung wieder her, nachdem N Anweisungen ausgeführt wurden.
--debug-info, -T Gibt Speicher- und CPU-bezogene Informationen aus.
Hinweis:
Der Testvorgang erfordert das Generieren einer Testtabelle und das Einfügen von Testdaten. Ein MySQLSLAP-Schema wird standardmäßig generiert zuerst gelöscht. Mit --only-print können Sie den tatsächlichen Testvorgang ausdrucken. Nach Abschluss des gesamten Tests bleiben keine Spuren in der Datenbank zurück.
mysqlslap -a -c 150 -i 10 -uroot -proot1234 Beim Testen der Anzahl der MySQL-Verbindungen auf 150
Wenn die Stresstest-Parallelitätszahl erreicht wurde 200, die Verbindung brach zusammen
Testbeispiel:
Single-Thread-Test.
# mysqlslap -a -uroot -proot1234
Multithread-Tests, Parallelität testen.
# mysqlslap -a -c 100 -uroot -proot1234
Wenn die Anzahl der Parallelitäten 100 erreicht, beträgt die Suchabfragezeit mehr als 1 Sekunde
Iteratives Testen. Wird verwendet, um Tests mehrmals durchzuführen, um den Durchschnitt zu ermitteln.
# mysqlslap -a -i 10 -uroot -proot1234
Testen und vergleichen Sie die Leistung verschiedener Speicher-Engines gleichzeitig:
# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb -uroot -proot1234
Führen Sie einen Test mit 50 bzw. 100 Parallelität aus , führe insgesamt 1000 Abfragen aus:
Es ist offensichtlich, dass die Leistungsabfrage von innodb besser ist
# mysqlslap -a --concurrency=50,100 --number-of -queries 1000 -uroot -proot1234
50 bzw. 100 Parallelität erhalten ein Testergebnis (Benchmark). Je höher die Parallelität, desto länger dauert die Ausführung aller Abfragen. Aus Gründen der Genauigkeit können Sie den Test mehrmals wiederholen:
# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 -uroot -proot1234
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in MySQL-Cluster-Stresstests. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!