Heim  >  Artikel  >  Datenbank  >  Detaillierte Erläuterung der MySQL-Benchmark-Tests und Sysbench-Tools

Detaillierte Erläuterung der MySQL-Benchmark-Tests und Sysbench-Tools

coldplay.xixi
coldplay.xixinach vorne
2020-09-11 17:30:422546Durchsuche

Detaillierte Erläuterung der MySQL-Benchmark-Tests und Sysbench-Tools

Verwandte Lernempfehlungen: MySQL-Tutorial

Was ist ein Benchmark-Test?

Beim Datenbank-Benchmark-Test handelt es sich um einen quantitativen, reproduzierbaren und vergleichbaren Test von Datenbank-Leistungsindikatoren. Benchmarktest und Stresstest Benchmarktest kann als Stresstest für das System verstanden werden. Benchmark-Tests kümmern sich jedoch nicht um die Geschäftslogik und sind einfacher, direkter und einfacher zu testen. Die Daten können von Tools generiert werden und erfordern keine echten Daten, während Stresstests im Allgemeinen die Geschäftslogik berücksichtigen (z. B. das Warenkorbgeschäft). erfordert echte Daten.

Die Rolle des Benchmarking

Bei den meisten Webanwendungen ist die Datenbank der Flaschenhals des gesamten Systems. Der Grund dafür ist einfach: andere Faktoren in Webanwendungen, wie Netzwerkbandbreite, Lastausgleichsknoten, Anwendungsserver (einschließlich CPU, Speicher, Festplattenbeleuchtung, Anzahl der Verbindungen). usw.), Cache usw. Es ist einfach, Leistungsverbesserungen durch horizontale Erweiterung (allgemein als Hinzufügen von Maschinen bezeichnet) zu erzielen. Bei MySQL kann der Druck, Daten in die Datenbank zu schreiben, aufgrund von Datenkonsistenzanforderungen nicht durch das Hinzufügen weiterer Maschinen verteilt werden, obwohl der Druck durch Vorcaching (Redis usw.), Lese-/Schreibtrennung und Sub-Cache verringert werden kann. Datenbanken und Tabellen, aber im Vergleich zur horizontalen Erweiterung anderer Komponenten des Systems ist es zu eingeschränkt.

Die Rolle des Datenbank-Benchmark-Tests besteht darin, die Leistung der Datenbank unter der aktuellen Konfiguration (einschließlich Hardwarekonfiguration, Betriebssystem, Datenbankeinstellungen usw.) zu analysieren, um so den Leistungsschwellenwert von MySQL zu ermitteln und die Konfiguration entsprechend den tatsächlichen Systemanforderungen anzupassen .

Benchmark-Metriken

Zu den gängigen Datenbankindikatoren gehören:

TPS/QPS: misst den Durchsatz. Antwortzeit: einschließlich durchschnittlicher Antwortzeit, minimaler Antwortzeit, maximaler Antwortzeit, Zeitprozentsatz usw. Der Zeitprozentsatz ist von größerer Bedeutung, beispielsweise die maximale Antwortzeit der ersten 95 % der Anfragen. . Parallelität: Die Anzahl der gleichzeitig verarbeiteten Abfrageanforderungen.

Kategorien von Benchmarks

Es gibt zwei Ideen für das Benchmarking von MySQL:

  • Benchmark-Tests für das gesamte System: Testen über http-Anfragen, beispielsweise über Browser, APPs oder Postman und andere Testtools. Der Vorteil dieser Lösung besteht darin, dass sie besser auf das gesamte System abzielt und die Testergebnisse genauer sind. Der Nachteil besteht darin, dass das Design komplex und schwierig zu implementieren ist. Y m nur für den Benchmark-Test von MySQL: Vor- und Nachteile sind das Gegenteil des Tests für das gesamte System.
  • Beim Benchmarking von MySQL werden in der Regel spezielle Tools wie mysqlslap, sysbench usw. verwendet. Unter anderem ist Sysbench vielseitiger und leistungsfähiger als MySQLslap und besser für Innodb geeignet (da es viele Innodb-IO-Funktionen simuliert). Im Folgenden wird beschrieben, wie Sysbench für Benchmark-Tests verwendet wird.
  • Sysbench-Einführung

    sysbench ist ein plattformübergreifendes Benchmark-Testtool, das Multithreading und mehrere Datenbanken unterstützt. Es umfasst hauptsächlich die folgenden Tests:

    1. CPU-Leistung 2. Festplatten-E/A-Leistung 3. Scheduler-Leistung 4. Speicherzuweisung und Übertragungsgeschwindigkeit 5. POSIX-Thread-Leistung 6. Datenbankleistung (OLTP-Benchmark-Test) 7. In diesem Artikel wird hauptsächlich der Test der Datenbankleistung vorgestellt.

    sysbench-Installation

    Die in diesem Artikel verwendete Umgebung ist CentOS 6.5; die Installationsmethoden auf anderen Linux-Systemen sind ähnlich. Die MySQL-Version ist 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

    Sysbench-Syntax

    Führen Sie „sysbench –help“ aus, um die detaillierte Verwendung von sysbench anzuzeigen. Die grundlegende Syntax von Sysbench lautet wie folgt:

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

    Im Folgenden werden die häufig verwendeten Parameter und Befehle im tatsächlichen Gebrauch beschrieben.

    1.command Der Befehl ist der von Sysbench auszuführende Befehl, einschließlich „Vorbereiten“, „Ausführen“ und „Bereinigen“. Wie der Name schon sagt, dient „Vorbereiten“ dazu, Daten im Voraus für den Test vorzubereiten, und „Ausführen“ dient dazu, den formalen Test und die Bereinigung auszuführen besteht darin, die Datenbank nach Abschluss des Tests zu bereinigen.

    2.testname testname gibt den durchzuführenden Test an. In der alten Version von Sysbench können Sie das Testskript über den Parameter --test angeben. In der neuen Version wurde der Parameter --test für veraltet erklärt kann weggelassen werden. Verwenden Sie stattdessen --test, um das Skript direkt anzugeben.

    Die folgenden beiden Methoden haben beispielsweise den gleichen Effekt:

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

    Das beim Testen verwendete Skript ist ein Lua-Skript. Sie können das mit sysbench gelieferte Skript verwenden oder es selbst entwickeln. Für die meisten Anwendungen ist die Verwendung der mit Sysbench gelieferten Skripte ausreichend. In verschiedenen Versionen von Sysbench kann der Speicherort des Lua-Skripts unterschiedlich sein. Sie können den Befehl „find“ im Sysbench-Pfad verwenden, um nach oltp.lua zu suchen. P.S.: Die meisten Datendienste sind vom Typ OLTP. Wenn Sie nicht verstehen, was OLTP ist, ist die Wahrscheinlichkeit hoch, dass Ihr Datendienst vom Typ OLTP ist.

    3.Optionen Es gibt viele Parameter für Sysbench. Zu den am häufigsten verwendeten gehören: MySQL-Verbindungsinformationsparameter:

    1.--mysql-host: Hostname des MySQL-Servers, standardmäßig localhost; wenn Sie localhost auf diesem Computer verwenden und ein Fehler gemeldet wird, der darauf hinweist, dass Sie keine Verbindung zum MySQL-Server herstellen können, sollten Sie in der Lage sein, die IP-Adresse von zu ändern Ihre Maschine. 2.--mysql-port: MySQL-Server-Port, Standard 33063.--mysql-user: Benutzername 4.--mysql-password: Passwort

    MySQL-Ausführungsparameter:

        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

       测试结果

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

    Zu den für uns wichtigeren Informationen gehören unter anderem: Abfragen: Gesamtzahl der Abfragen und QPS-Transaktionen: Gesamtzahl der Transaktionen und TPS Latenz – 95. Perzentil: die maximale Antwortzeit der ersten 95 % der Anfragen, in diesem Fall es beträgt 344 Millisekunden, diese Verzögerung ist sehr groß. Da die Leistung des von mir verwendeten MySQL-Servers sehr schlecht ist, ist dieser Wert in einer formalen Umgebung absolut inakzeptabel.

    Vorschläge

    Hier sind einige Vorschläge für die Verwendung von Sysbench.

    1. Bevor Sie mit dem Test beginnen, sollten Sie zunächst klären: Sollten Sie einen Benchmark-Test für das gesamte System, einen Benchmark-Test für MySQL oder beides verwenden? 2. Wenn Sie MySQL vergleichen müssen, müssen Sie auch die Genauigkeitsanforderungen klären: Ob Sie echte Daten aus der Produktionsumgebung verwenden müssen oder ob Sie Tools verwenden müssen, um diese zu generieren; Wenn Sie echte Daten verwenden möchten, versuchen Sie, alle Daten anstelle von Teilen der Daten zu verwenden. 3. Benchmark-Tests müssen mehrmals durchgeführt werden, um aussagekräftig zu sein. 4. Beim Testen müssen Sie auf den Status der Master-Slave-Synchronisation achten. 5. Der Test muss Multithread-Situationen simulieren. Single-Threaded-Situationen können nicht nur echte Effizienz, sondern auch keine Blockierungs- oder sogar Deadlock-Situationen simulieren.

    Wenn Sie mehr über das Programmieren erfahren möchten, achten Sie bitte auf die Rubrik „PHP-Schulung“!

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der MySQL-Benchmark-Tests und Sysbench-Tools. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:phpxs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen