Kann mir jemand helfen, diese, wie ich hoffe, wirklich einfache Frage zu beantworten?
Angenommen, ich habe eine Anwendung, die mit einer SQL Server-Datenbank läuft, und führe Leistungstests durch. Kann ich mit einer Leistungssteigerung rechnen, wenn ich einen Datenbankservercluster einrichte? Oder erhalte ich dadurch „nur“ bessere Betriebszeit- und Verfügbarkeitsmerkmale mit Failover usw.?
Ich neige dazu, Letzteres zu denken. Wenn ich also das Gefühl habe, dass die Datenbankleistung schwach ist, sollte ich an meinem Anwendungsdesign arbeiten, anstatt zusätzliche Hardware zu kaufen …
Grüße, Emil
Antwort1
Es hängt stark davon ab, wie Ihr Cluster konfiguriert ist und wie darauf zugegriffen wird. Es hilft nicht, dass das Wort „Cluster“ mehrere verschiedene Anordnungen umfassen kann.
Einige Vorkehrungen haben nur sehr geringe Auswirkungen, andere verlangsamen die Dinge merklich (mehrere aktive Server zum Beispiel, wo eine Transaktion warten muss, bis alle Server auf dem neuesten Stand sind, bevor sie als festgeschrieben gilt, was zu einer erheblichen Transaktionslatenz bei Vorgängen mit Einfügungen/Aktualisierungen führen kann; auch das Verteilen von Sperrinformationen zwischen den Servern kann sich in ähnlicher Weise auf schreibgeschützte Vorgänge auswirken) , und einige Vorkehrungen können die Dinge beschleunigen (mehrere schreibgeschützte Replikate, um die schreibgeschützte Last auf mehrere Maschinen zu verteilen, wenn die Sperranforderungen dies beispielsweise zulassen) .
Also: ja, nein oder vielleicht! Wenn Sie Ihre Konfiguration etwas genauer beschreiben [Maschinen, Betriebssystem, DBMS, Clusterkonfiguration, welcher Code auf den Cluster zugreift (ein einzelner Webserver, viele Webserver, viele externe Clients, ...), Lastmuster, ...], erhalten Sie möglicherweise eine viel bessere Antwort.
(also ist es leider keine so einfache Frage, wie Sie gehofft hatten, tut mir leid!)
Antwort2
Nein, Sie werden keine Leistungssteigerung feststellen. Die Clusterlösung im MS SQL Server dient nur der Hochverfügbarkeit, nicht der Skalierung oder dem Lastenausgleich.
Sie können beide Knoten im Cluster so einrichten, dass sie gleichzeitig aktiv sind. Sie bedienen dann jedoch unterschiedliche Datenbanken und „übernehmen“ die Datenbanken dennoch nur vom anderen Knoten, wenn dieser ausfällt.
Aus einem SQL-Server mehr Leistung herauszuholen, als ein einzelner Server erzeugen kann, ist ein komplexes Problem. Ich lehne mich mal aus dem Fenster und behaupte, dass Sie Ihre Datenbankleistungsprobleme unabhängig von Ihrem Szenario leichter lösen können, indem Sie mehr RAM, schnellere Festplatten und Ihren Datenbankcode optimieren.
Antwort3
Sie müssen über gemeinsam genutzten Speicher (SAN/NAS) verfügen, der höchstwahrscheinlich eine bessere Leistung als direkt angeschlossene Festplatten bietet. Ein Cluster bietet jedoch keine bessere Leistung als eine eigenständige Instanz. Ein Cluster dient ausschließlich dazu, das Risiko eines Hardwarefehlers zu verringern.