Ich versuche, einen neuen Server zu erwerben, auf dem MySQL Server ausgeführt werden kann. Dieser neue Server wird ein Slave meines Hauptrechners sein. Dieser Server ist jedoch nur für die Berichterstellung "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 ungefähr 1500 US-Dollar, und die SSD verfügt über weniger Festplattenspeicher. Wenn ich in SSD investiere, macht sich die Geschwindigkeit bemerkbar?
Ich kann 4 (500 GB SATA 7200) für 1500 US-Dollar weniger kaufen als 2 (500 GB SSD).
Können Sie mir bitte bei der Entscheidung helfen, ob sich das Upgrade lohnt oder nicht?
Noch etwas, das ich erwähnen möchte, ist, dass ich nicht benutze, query_cache
so dass es viele Festplattenlesevorgänge geben wird.
Dieser Server wird 32 GB RAM haben und Ubuntu 12.04 ausführen
Antworten:
Ja, mit vielen Lesevorgängen und dem Melden einer SSD wird sich ein großer Unterschied ergeben. Ab einer Drehzahl von 7200 U / min können Sie nicht mehr als ~ 100 IOPS erwarten, während die billigste SSD mindestens 5x so schnell sein kann. Mit einer guten SSD können Sie 20000 IOPS oder mehr erreichen.
Auch zufällige Schreibvorgänge auf SSD sind viel schneller, da sich die Festplatte nicht jedes Mal bewegen muss.
quelle
Es gibt drei Faktoren, die Sie hier berücksichtigen müssen:
innodb_buffer_pool_size
Wenn verfügbarer Speicher> Datenbankgröße , kann Ihr Server wahrscheinlich alle Ihre Daten im Speicher behalten, und daher ist eine SSD möglicherweise eine Geldverschwendung. Der InnoDB-Puffer hat nichts mit den
query_cache
Optionen zu tun .Wenn der verfügbare Speicher <Datenbankgröße ist , müssen Abfragen möglicherweise Daten von der Festplatte abrufen. Bei extrem komplexen Abfragen oder wenn viele Benutzer gleichzeitig Abfragen ausführen, kann dies zu einer Belastung der Festplatte führen.
Im Allgemeinen speichern Datenbanken die am häufigsten verwendeten Daten im Arbeitsspeicher. Wenn 80% Ihrer Daten selten oder nie verwendet werden, müssen Sie nur 20% Ihrer Datenbank im Arbeitsspeicher belassen, um die Leistung aufrechtzuerhalten.
Die genaue Menge an Speicher, die Sie benötigen, wird nicht sofort ersichtlich sein. Wenn Ihre Datenbank jedoch nicht über 200 GB verfügt, würde ich Up_Ones Ratschlag uneingeschränkt empfehlen, statt SSDs zusätzliches Geld für Speicher auszugeben.
NB: Wenn Ihre Datenbank MyISAM verwendet (Sie können dies mit überprüfen
show table status;
), ziehen Sie in Betracht, auf InnoDB zu wechseln. Der MyISAMkey_buffer_cache
speichert nur Indexblöcke, während der InnoDB-Pufferpool ganze Datenblöcke speichert. In den meisten Fällen wird sich InnoDB als bessere Engine für die Arbeit erweisen.quelle
Ich halte das nicht für eine so gute Idee!
Mein Rat:
Wenn Sie den InnoDB-Pufferpool vergrößern, können Sie MySQL am besten beschleunigen. Wenn Sie mehr RAM hinzufügen können, tun Sie es. Dadurch werden die meisten Ihrer aktuellen Daten gespeichert. Stellen Sie sich das vor! Disk vs Memory!
Das perfekte Szenario ist, dass Ihr Speicher die Größe Ihrer Datenbank-
SSD hat - großartig, aber es wird teuer! und es ist nur gut für leseintensive Jobs.
Unter diesem Link finden Sie einen schönen Artikel von Vadim Tkachenko
quelle
Als Alternative: Sie könnten beide verwenden, eine große Festplatte (idealerweise RAID1 mit drei Festplatten), um Daten zu speichern, und eine kleinere SSD, um Indizes zu speichern.
Begründung:
quelle
Tu es.
Sie haben erwähnt, dass Sie eine hohe Arbeitsbelastung durch Lesezugriffe haben, sodass Sie das große Problem mit der Verwendung von SSDs in Datenbanken bereits vermieden haben: den Verschleiß. Kein Schreiben bedeutet keine Abnutzung, also bist du golden.
Wie ich bereits erwähnte, ist Ihr IOPS mit der SSD um Größenordnungen schneller als mit sich drehenden Festplatten. Für eine Datenbank wird IOPS so ziemlich in Anforderungen pro Sekunde übersetzt. Wenn Sie den RAM-Cache ignorieren, werden Sie ungefähr 100-mal so viele Anfragen von einer SSD als von einer 7200RPM-Festplatte bearbeiten.
TRIM wird keinen großen Unterschied machen, da es sich um eine Arbeitslast mit hohem Leseaufwand handelt und Sie sowieso 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 SSD mit 960 GB für $ 750 erhalten ( http://www.auspcmarket.com.au/960gb-crucial-m500-sata-6gbps-2-5-7mm-with- 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 Anbieter, also wird dir die SSD über die Nase berechnet? Ich kaufe die SSD immer separat und tausche sie 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 kaufen, aber diese kosten sowieso fast so viel wie die SSD, während sie viel langsamer sind.
Wenn Sie weit über 1 TB hinaus skalieren müssen, werden SSDs zu teuer, aber bei 1 TB würde ich sagen, dass die SSD ein klarer Gewinn ist.
quelle
Ich bin mir definitiv einig, dass der größte Knall für das Geld von der Vergrößerung Ihres innodb_db_bufferpools herrührt, aber leider hängt dies vollständig 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, so dass es eigentlich keine Option ist, alles in den Arbeitsspeicher einzubauen. Aus diesem Grund haben wir kürzlich auf SSD-basierten Speicher umgestellt. Ich habe mich intensiv mit der Verwendung von IOPS für MySQL auf verschiedenen RAID-Arrays befasst, 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 gelesen: 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 RPM 900 GB SAS (2,5 ") Festplatte
Test: (g = 0): rw = randrw, bs = 4K - 4K / 4K - 4K / 4K - 4K, ioengine = libaio, iodepth = 64 gelesen: io = 3071,7 MB, bw = 10236 KB / 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 gelesen: io = 3071,7 MB, bw = 93708 KB / 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 gespiegelte EDGE-Erhöhung 480 GB 2,5-Zoll-MLC ( http://www.edgememory.com )
Test: (g = 0): rw = randrw, bs = 4K - 4K / 4K - 4K / 4K - 4K, ioengine = libaio, iodepth = 64 gelesen: io = 3068,4 MB, bw = 141934 KB / 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
So ist es klar, dass hochwertige SSD von heute erstaunliche Leistungsträger sind. Zwei gespiegelte SSDs können 16-Platten-SAN-Speichergehäuse problemlos übertreffen, und das ist allein schon eine überzeugende Aussage.
Wenn Sie sich für alle Details interessieren, finden Sie den Rest des Artikels in meinem Blog:
http://www.juhavehnia.com/2015/05/using-ssds-to-prove-mysql-performance.html
quelle