• MySQL / mysqldump

MySQL mit NVMe SSD langsamer als erwartet

Bei der Evaluierung neuer Server haben wir den Import eines MySQL-Dumps auf zwei verschiedenen Plattformen mit unterschiedlichen Komponenten und ähnlicher Leistungsfähigkeit verglichen. Dabei gab es überraschende Abweichungen von mehr als 450%.


Basisdaten für den Test

Es soll ein MySQL-Dump mit ca. 15 Millionen Datensätzen eingespielt werden. Folgende Software und Server wurden dabei verwendet:


Software

  • CentOS 8.3, 64 Bit
  • Percona Server 8.0.22
  • MySQL-Dump mit ca. 15 Millionen Datenstätzen

Server1

  • AMD Ryzen 7 3700X 8-Core Processor, 3.6 GHZ
  • 64 GB ECC RAM
  • SAMSUNG MZVLB1T0HBLR, 1TB, Sequentielles Schreiben 3000MB/s, Zufällige IOPS schreibend 500000
    Samsung MZVLB1T0HBLR

Server2

  • Intel(R) Xeon(R) E-2288G CPU, 3.70GHz
  • 64 GB ECC RAM
  • SAMSUNG MZQLB960HAJR, 960GB, Sequentielles Schreiben 1050MB/s, Zufällige IOPS schreibend 40000
    Samsung MZQLB960HAJR
    Der offizielle Link zu samsung.com enthält bei Erstellung dieser Seite keine Spezifikationen, daher Informationen aus dem Handel: Samsung MZQLB960HAJR - alternativ

Ergebnisse

Server 1 (AMD, MZVLB1T0HBLR)


[root@server1 ~]# date; zcat test.sql.gz | mysql -psecret test; date
Thu Mar 25 19:45:14 CET 2021
Thu Mar 25 20:08:33 CET 2021
Delta:     23:19 minutes

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
   0.80    0.00    0.27    4.74    0.00   94.19

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
nvme0n1          0.00 1431.60      0.00  31421.85     0.00   290.07   0.00  16.85    0.00    0.40   0.26     0.00    21.95   0.50  71.40
nvme1n1          0.00 1431.57      0.00  31421.72     0.00   290.07   0.00  16.85    0.00    1.00   1.15     0.00    21.95   0.70  99.68

Dauer: 23:19 Minuten

Server 2 (Intel, MZQLB960HAJR)

[root@server2 ~]# date; zcat test.sql.gz | mysql -psecret test; date
Thu Mar 25 19:00:01 UTC 2021
Thu Mar 25 19:04:44 UTC 2021
Delta:     04:43 minutes

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
   6.32    0.00    0.87    0.75    0.00   92.05

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
nvme0n1          0.00 4319.53      0.00 140428.80     0.00   485.03   0.00  10.10    0.00    0.08   0.02     0.00    32.51   0.02  10.28
nvme1n1          0.00 4319.53      0.00 140428.80     0.00   485.03   0.00  10.10    0.00    0.08   0.02     0.00    32.51   0.02  10.29

Dauer: 04:43 Minuten

Bewertung der Ergebnisse und Tuning

Zunächst muss man festhalten, dass diesem Test ein spezieller Fall zugrunde liegt: das Einspielen eines MySQL-Dumps ist single-threaded und kann daher weder Multicore-CPUs noch aktuelle SSDs auslasten. Dennoch lassen sich Schlussfolgerungen aus den Ergebnissen ziehen, da die Abweichungen aufgrund identischer Software und Daten von der Hardware kommen müssen.

Laut den technischen Daten des Herstellers müsste die in Server 1 verbaute NVMe SSD (MZVLB1T0HBLR) bei zufälligen Schreibvorgängen schneller sein als das in Server 2 verbaute Modell (MZQLB960HAJR). Trotzdem dauert der Vorgang mit der vermeintlich schnelleren SSD ca. um den Faktor 4,5 länger.

Es folgten weitere Tests um einen Defekt der NVMe SSDs auszuschließen (SMART-Werte überprüft, Selbsttests, Benchmarks, ...): die NVME SSDs sind in Ordnung und erzielen auch eine sequentielle Schreibleistung weit über 2GByte pro Sekunde. Aufgrunddessen wurde die MySQL-Config geändert und der Parameter innodb_log_file_size von 128MB auf 5GB erhöht (Gruppe von jeweils zwei Logs). Danach wurde der Test wiederholt:

[root@server1 ~]# date; zcat test.sql.gz | mysql -psecret test; date
Fri Mar 26 16:57:12 CET 2021
Fri Mar 26 17:03:45 CET 2021
Delta:     06:33

Dauer: 06:33 Minuten

Zusammenfassung

Die Tests legen nahe, dass der große Unterschied bei den Schreibraten der SSDs in der Ausrichtung zu suchen ist: die SSD von Server 1 ist für Clients/Desktops gedacht, die SSD in Server 2 für Anwendungen im Rechenzentrum. Der Controller bzw. die Firmware der SSD von Server 2 kommt scheinbar besser mit den Anforderungen einer Datenbankwiederherstellung zurecht.

Im Zusammenhang mit einer Samsung 970 Pro NVMe und MySQL 8.0 ist folgender Bugreport interessant:
Bug 93734 - MySQL 8.0 is 36 times slower than MySQL 5.7

Information zum Datenschutz | Helfen Sie uns diese Seite zu optimieren und erlauben Sie Cookies - daraus gewonnene Informationen werden nicht an Dritte weitergegeben.
Ablehnen Erlauben