Ich möchte wissen, welche IOPS (E / A pro Sekunde) den DB CRUD-Betrieb beeinflussen

8

Ich möchte einen dedizierten Server für meine Datenbank (MySQL) erhalten, auf dem InnoDB Engine ausgeführt wird. In der InnoDB-Kapazität gibt es diese Option, mit der Sie die darin enthaltenen IOPS definieren können. Angenommen, ich habe eine SATA-Festplatte mit 72.000 U / min, die 100 IOPS ermöglicht. Bedeutet dies, dass meine Datenbank nur 100 gleichzeitige SQL-Abfragen pro Sekunde ausführen kann, oder bedeutet dies, dass 100 einzelne Lese- oder Schreibvorgänge in 1 Sekunde ausgeführt werden? Wie kann eine Datenbank mit 3000 Abfragen pro Sekunde umgehen, die auf einer solchen Hardware gestartet werden? Ich bin ein bisschen verwirrt, also erkläre es mir bitte. Ich möchte mehr als 200 Abfragen auf meinem dedizierten Server ausführen.

Alex
quelle

Antworten:

10

Das IOPS einer Festplatte gibt an, wie viele E / A-Vorgänge dieses bestimmte Laufwerk pro Sekunde ausführen kann. Da zufällige Lesevorgänge, zufällige Schreibvorgänge, sequentielle Lesevorgänge und sequentielle Schreibvorgänge unterschiedliche Leistungsmerkmale aufweisen, bedeutet dies, dass dies ein gewichteter Durchschnitt dieser vier Zahlen ist, der eine gewisse Arbeitslast darstellt. Diese Arbeitslast kann der Arbeitslast, die eine Datenbank tatsächlich ausführen würde, ähnlich sein oder nicht, sodass Ihr System möglicherweise mehr oder weniger Vorgänge pro Sekunde erhält.

Eine SQL-Abfrage würde unter der Annahme, dass sie physische E / A ausführt (viele Abfragen müssen keine E / A ausführen, da sie einfach aus Daten lesen, die sich bereits im Speicher der Datenbank, im Dateisystem-Cache oder im SAN-Cache befinden) viele E / A-Operationen ausführen. Wenn Ihre Abfragen tatsächlich physische E / A ausführen, kann eine einzelne Abfrage problemlos 100 E / A-Vorgänge pro Sekunde ausführen. Möglicherweise werden 100 Abfragen gleichzeitig ausgeführt, wobei jeweils nur 1 physische E / A-Operation pro Sekunde ausgeführt wird. Dies würde jedoch wahrscheinlich bedeuten, dass die Rückgabe aller 100 Abfragen inakzeptabel lange dauert.

Wenn Sie 3000 Abfragen pro Sekunde bearbeiten müssen, müssen Sie realistischerweise sicherstellen, dass die überwiegende Mehrheit Ihrer Abfragen keine physischen E / A-Vorgänge ausführen muss, indem Sie sicherstellen, dass die benötigten Daten zwischengespeichert werden (vorzugsweise von der Datenbank). Außerdem müssen Sie die E / A auf eine relativ große Anzahl von Laufwerken (mit einer geeigneten RAID-Konfiguration) verteilen, um die Gesamtleistung des Systems zu erhöhen. Diese Art der Kapazitätsplanung erfordert ein einigermaßen gutes Verständnis Ihrer Anwendung, Ihrer Daten, der Menge an E / A, die jede Abfrage wahrscheinlich wirklich benötigt usw. Und Sie müssen wahrscheinlich Kosten und Leistung in Einklang bringen - Hinzufügen Speicher oder das Hinzufügen von Laufwerken oder das Ändern der RAID-Konfiguration erfordern unterschiedliche Kompromisse zwischen Kosten, Leistung und verfügbarem Speicherplatz, die berücksichtigt werden müssen.

Justin Cave
quelle