Paul. Ihre Frage besteht aus zwei Teilen.
Erstens, warum schreibt langsam?
Wenn Sie sagen, dass Sie große Datenbanken haben, möchten Sie dies mit einigen Zahlen verdeutlichen. Die Microsoft-Teams haben in weniger als einer Stunde Multi-Terabyte-Ladungen demonstriert, aber natürlich verwenden sie High-End-Ausrüstung und spezielle Data-Warehousing-Techniken. Ich war an Data-Warehousing-Teams beteiligt, die regelmäßig über Nacht so viele Daten luden, dass die Transaktionsprotokolllaufwerke über ein Terabyte sein mussten, nur um die schnellen Bursts zu bewältigen, aber nicht ein Terabyte pro Stunde.
Um herauszufinden, warum Schreibvorgänge langsam sind, sollten Sie Ihre Ladeverfahren mit Data Warehousing-Techniken vergleichen. Haben Sie beispielsweise versucht, Staging-Tabellen zu verwenden? Tabellenpartitionierung? Daten- und Protokolldateien auf verschiedenen Arrays?Wenn Sie nicht sicher sind, wo Sie anfangen, mein Perfmon Tutorial überprüfen Ihr System zu messen, für Engpässe suchen:
http://www.brentozar.com/archive/2006/12/dba-101-using-perfmon-for-sql-performance-tuning/
Zweitens, wie skalieren Sie aus?
Sie haben gefragt, wie Sie mehrere Datenbankserver einrichten, sodass einer die Massenlast verarbeitet, während andere Lesevorgänge und einige Schreibvorgänge verarbeiten. Ich warne sehr stark davor, den Ansatz mehrerer Server für Schreibvorgänge zu wählen, weil es schnell viel komplizierter wird, aber die Verwendung mehrerer Server für Lesevorgänge ist nicht ungewöhnlich.
Der einfachste Weg, es zu tun ist, mit Protokollversand: alle X Minuten, der primäre Server nimmt eine Transaktionsprotokollsicherung und dann wird die Protokollsicherung auf dem Nur-Lese-Berichtsserver angewendet. Es gibt einige Fänge mit diesem - die Daten sind ein wenig zurück, und der Wiederherstellungsprozess muss alle Verbindungen aus der Datenbank kicken, um die Wiederherstellung anzuwenden. Dies kann eine vollkommen akzeptable Lösung für Dinge wie Data Warehouses sein, wo die Endbenutzer ihre eigenen Berichte laufen lassen wollen, während die Daten des neuen Tages geladen werden. Sie können Transaktionen nicht einfach wiederherstellen, während das Data Warehouse geladen wird, und die Benutzer können die Verbindungen die ganze Zeit aufrechterhalten. die folgende auf Ihre Frage
zu helfen, herauszufinden, welche Lösung die richtige für Sie ist, sollten Sie erwägen:
- Die Größe der Datenbank (GB/TB in Größe, Anzahl der Millionen von Zeilen in der größten Tabelle Das ist das schreibt)
- Die Größe Ihres Server & Speicher (ein Kasten mit 10 Laufwerken hat, hat verschiedene Lösungen zur Verfügung als eine Schachtel mit einem SAN angeschlossen)
- Das Verfahren zum Laden von Daten (es ist Single-Rekord-Einsätze, Verwenden Sie Massenlasten, verwenden Sie Tabellenpartitionierung usw.)
Hängt davon ab. Blockieren die Lesevorgänge vor Schreibvorgängen, oder ist das System mit Engpässen bei CPU- oder Festplatten-I/O behaftet? – tpdi