it-swarm.com.de

SSD vs HDD für Datenbanken

Ich versuche, einen neuen Server zu kaufen, auf dem MySQL Server ausgeführt werden kann. Dieser neue Server wird ein Slave meines Hauptcomputers sein. Dieser Server ist jedoch nur für die Meldung "Viele Lesevorgänge und komplexe Abfragen" vorgesehen.

Jetzt möchte ich in Solid-State-Festplatten investieren, habe mich aber gefragt, ob es den Preis wirklich wert ist. Der Unterschied zwischen einer SSD und einer SATA 7200-Festplatte beträgt ca. 1500 US-Dollar, und die SSD verfügt über weniger Speicherplatz. Wenn ich in SSD investiere, wird sich die Geschwindigkeit bemerkbar machen?

Ich kann 4 (500 GB SATA 7200) für 1500 USD weniger kaufen als 2 (500 GB SSD)

Können Sie mir bitte bei der Entscheidung helfen, ob sich das Upgrade lohnt oder nicht?

Noch einmal, was ich erwähnen möchte, ist, dass ich nicht query_cache Verwende, so dass es viele Festplattenlesevorgänge geben wird.

Dieser Server verfügt über 32 GB RAM und wird Ubuntu 12.04 ausführen)

42
Mike

Ja, mit vielen Lesevorgängen und der Meldung einer SSD wird ein großer Unterschied gemacht. Von einem Laufwerk mit 7200 U/min können Sie nicht mehr als ~ 100 IOPS erwarten, während die billigste SSD mindestens 5-mal so schnell sein kann. Mit einer guten SSD können Sie bis zu 20000 IOPS oder noch mehr erreichen.

Auch zufällige Schreibvorgänge in SSDs sind viel schneller, da die Festplatte nicht jedes Mal verschoben werden muss.

25
nmad

Hier sind drei Faktoren zu berücksichtigen:

  1. Die Größe Ihrer Datenbank
  2. Die Menge an Speicher, die Sie auf dem Server haben
  3. Ihre my.cnf-Konfiguration, speziell innodb_buffer_pool_size

Wenn verfügbarer Speicher> Datenbankgröße verfügbar ist, kann Ihr Server wahrscheinlich alle Ihre Daten im Speicher behalten, und daher kann eine SSD eine Geldverschwendung sein . Der InnoDB-Puffer hat nichts mit den Optionen query_cache Zu tun.

Wenn verfügbarer Speicher <Datenbankgröße ist, müssen Abfragen möglicherweise Daten von der Festplatte abrufen. Bei extrem komplexen Abfragen oder wenn viele Benutzer Abfragen gleichzeitig ausführen, kann dies die Festplatte belasten.

Im Allgemeinen speichern Datenbanken die am häufigsten verwendeten Daten im Speicher. Wenn 80% Ihrer Daten selten/nie verwendet werden, müssen Sie nur 20% Ihrer Datenbank im Speicher behalten, um die Leistung aufrechtzuerhalten.

Die genaue Menge an Speicher, die Sie benötigen, ist nicht sofort ersichtlich. Wenn Ihre Datenbank jedoch nicht über 200 GB verfügt, würde ich Up_One dringend empfehlen, anstelle von SSDs zusätzliches Geld für Speicher auszugeben.

NB: Wenn Ihre Datenbank MyISAM verwendet (Sie können dies mit show table status; Überprüfen), sollten Sie in Betracht ziehen, zu InnoDB zu wechseln. Das MyISAM key_buffer_cache Speichert nur Indexblöcke, während der InnoDB-Pufferpool ganze Datenblöcke speichert. In den meisten Fällen wird sich InnoDB als besserer Motor für die Arbeit erweisen.

20
Nathan Jolly

Ich halte das nicht für eine so gute Idee!
Mein Rat
Die Vergrößerung Ihres InnoDB-Pufferpools ist der beste Weg, um MySQL zu beschleunigen. Wenn Sie mehr RAM hinzufügen können, tun Sie es. Dadurch werden die meisten Ihrer heißen Daten gespeichert. Stellen Sie sich vor! Disk vs Memory!
Das perfekte Szenario besteht darin, dass Ihr Speicher die Größe Ihrer Datenbank hat
SSD - ist großartig, aber es wird teuer! und es ist nur gut für leseintensive Jobs.

Überprüfen Sie diesen Link für Schöner Artikel dazu von Vadim Tkachenko

6
Up_One

Als Alternative: Sie können beides verwenden, eine große Festplatte (idealerweise RAID1 mit drei Festplatten), um Daten zu speichern, und eine kleinere SSD, um Indizes zu speichern.

Begründung:

  • die Indizes sind ziemlich klein, sodass Sie eine kleinere SSD verwenden können
  • häufige Abfragen sollten ohnehin hauptsächlich die Indizes treffen
  • das RAID1 bietet Ihnen Fehlertoleranz
  • mit RAID1 können Sie den Lastenausgleich für zufällige Lesevorgänge durchführen
  • drei Festplatten lassen Fehlertoleranz, wenn eine Festplatte ausfällt
  • die Indizes können neu erstellt werden, wenn die SSD ausfällt
6
Simon Richter

Tu es.

Sie haben erwähnt, dass Sie eine hohe Leselast haben, sodass Sie das große Problem bei der Verwendung von SSDs in Datenbanken bereits vermieden haben: wearout. Kein Schreiben bedeutet keine Abnutzung, also bist du golden.

Wie von edvinas.me erwähnt, ist Ihr IOPS mit der SSD um Größenordnungen schneller als mit sich drehenden Festplatten. Für eine Datenbank übersetzt IOPS so ziemlich in Anforderungen pro Sekunde. Wenn Sie den Cache RAM Cache) ignorieren, werden Sie ungefähr 100-mal so viele Anforderungen von einer SSD als von einer 7200RPM-Festplatte bearbeiten.

TRIM macht keinen großen Unterschied, da es sich um eine leselastige Arbeitslast handelt und Sie ohnehin vorhaben, die Festplatte zu füllen. Mach dir keine Sorgen.

Ich bin mir nicht sicher, woher das 1500-Dollar-Ding kam. Wenn ich meinen lokalen (australischen) Lieferanten überprüfe, kann ich eine 960 GB SSD von seriöser Marke für 750 US-Dollar erhalten ( http://www.auspcmarket.com.au/960gb-crucial-m500-sata-6gbps-2-5-) 7mm-mit-9-5mm-Adapter-ssd-read-500mb-s-write-400mb-s / ). Spinning Disks sind mehr oder weniger kostenlos, aber 750 US-Dollar sind immer noch viel schmackhafter als 1500 US-Dollar.

(Oh, warte - du bestellst wahrscheinlich bei einem namhaften Lieferanten, also berechnen sie dir die SSD durch die Nase? Ich kaufe die SSD immer separat und tausche sie in mir selbst aus, aber ich weiß nicht, ob das so ist in Ihrer Umgebung zulässig.)

Sie werden wahrscheinlich auch mit weniger RAM davonkommen, aber ohne Ihre genaue Arbeitslast zu kennen, ist es schwierig zu beurteilen, ob Sie RAM) sicher reduzieren können, ohne die Leistung zu beeinträchtigen.

Wenn Sie sich immer noch nicht sicher sind, können Sie große Laufwerke mit 10.000 U/min erwerben, die jedoch fast so viel kosten wie die SSD, während sie viel langsamer sind.

Wenn Sie weit über 1 TB skalieren müssen, werden SSDs zu teuer, aber bei 1 TB würde ich sagen, dass die SSD ein klarer Gewinn ist.

5
Ian Howson

Ich bin definitiv der Meinung, dass der größte Gewinn für das Geld darin besteht, Ihre innodb_db_bufferpool-Größe zu erhöhen, aber leider hängt es völlig davon ab, wie groß Ihr Datensatz ist und wie oft auf verschiedene Festplattenblöcke zugegriffen wird. Ich verwalte mehrere Datenbanken mit einer Größe von über 200 GB. Daher ist es nicht wirklich eine Option, alles in die RAM] zu integrieren. Aus diesem Grund haben wir kürzlich auf SSD-basierten Speicher umgestellt. Ich habe ziemlich viel recherchiert In Bezug auf die Verwendung von IOPS für MySQL auf verschiedenen RAID-Arrays, auf die ich Zugriff habe. Hier sind die Ergebnisse:

1.253 IOPS - 4 x SCSI 15k (3,5 ") Festplatte

test: (g = 0): rw = randrw, bs = 4K-4K/4K-4K/4K-4K, ioengine = libaio, iodepth = 64 read: io = 3071,7 MB, bw = 5012,8 kB/s, iops = 1253 , runt = 627475 ms schreiben: io = 1024,4 MB, bw = 1671,7 KB/s, iops = 417, runt = 627475 ms cpu: usr = 0,63%, sys = 3,11%, ctx = 985926, majf = 0, minf = 22

2.558 IOPS - 8 x 10K U/min 900 GB SAS (2.5 ") Festplatte

test: (g = 0): rw = randrw, bs = 4K-4K/4K-4K/4K-4K, ioengine = libaio, iodepth = 64 read: io = 3071,7 MB, bw = 10236KB/s, iops = 2558, runt = 307293 ms Schreiben: io = 1024,4 MB, bw = 3413,5 KB/s, iops = 853, runt = 307293 ms cpu: usr = 2,73%, sys = 8,72%, ctx = 904875, majf = 0, minf = 25

23.456 IOPS - Rackspace Performance 2 SSD-Server

test: (g = 0): rw = randrw, bs = 4K-4K/4K-4K/4K-4K, ioengine = libaio, iodepth = 64 read: io = 3071,7 MB, bw = 93708KB/s, iops = 23426, runt = 33566 ms Schreiben: io = 1024,4 MB, bw = 31249 KB/s, iops = 7812, runt = 33566 ms cpu: usr = 5,73%, sys = 35,83%, ctx = 181568, majf = 0, minf = 23

35.484 IOPS - 2 x Mirrored Edge Boost 480 GB 2,5 "MLC ( http://www.edgememory.com )

test: (g = 0): rw = randrw, bs = 4K-4K/4K-4K/4K-4K, ioengine = libaio, iodepth = 64 read: io = 3068,4 MB, bw = 141934KB/s, iops = 35483, runt = 22137 ms Schreiben: io = 1027,7 MB, bw = 47537 KB/s, iops = 11884, runt = 22137 ms cpu: usr = 11,68%, sys = 69,89%, ctx = 24379, majf = 0, minf = 20

Es ist also klar, dass hochwertige SSDs von heute erstaunliche Leistungsträger sind. Zwei gespiegelte SSDs können 16 Festplatten problemlos übertreffen SAN Speichergehäuse, und das ist allein schon eine überzeugende Aussage.

Wenn Sie an allen Details interessiert sind, finden Sie den Rest des Schreibens auf meinem Blog:

http://www.juhavehnia.com/2015/05/using-ssds-to-improve-mysql-performance.html

4
Juha Vehnia