..png)
Wir haben eine Datenbank, die ziemlich stark genutzt wird (fast 100 % der Anfragen sind Auswahlanfragen), und jetzt wird die Datenbank zum Engpass.
Wir suchten nach einer Lösung, mit der wir diese Datenbank (horizontal) skalieren und die Lastverteilung auf mehrere Instanzen verteilen konnten.
Im Idealfall suchen wir nach einer Möglichkeit, Instanzen dynamisch hinzuzufügen und zu entfernen (auf eine ähnliche Weise, wie Sie Instanzen von Azure Web App skalieren könnten).
Die beste Lösung, die ich bisher gefunden habe, ist „Lesen mit schreibgeschützten Replikaten skalieren“:https://docs.microsoft.com/en-us/azure/azure-sql/database/read-scale-out. Und das sieht nach einer perfekten Lösung aus. Das einzige Problem ist, dass ich nicht weiß, wie ich dort weitere Replikate hinzufügen könnte.
Antwort1
Ein RDBMS kann im Allgemeinen nicht horizontal skaliert werden, ohne die Daten auf irgendeine Weise zu sharden. Außerdem müssen die Daten in einem RDBMS normalisiert werden, was nicht für jeden Datensatz geeignet ist.
Außerdem ist zu beachten, dass dynamische Skalierbarkeit nicht dasselbe ist wie automatische Skalierung. Bei automatischer Skalierung wird ein Dienst automatisch basierend auf Kriterien skaliert, während dynamische Skalierbarkeit manuelle Skalierung mit minimalen Ausfallzeiten ermöglicht.
Eine mögliche Lösung könnte diese seinPowerShell-Skript zum Überwachen und Skalieren einer einzelnen SQL-Datenbank
Auch eine Migration zu Cosmos DB könnte eine Lösung sein.