Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wovon hängt die Datenbankabfrage und die Einfügegeschwindigkeit ab?

Um einen groben Vergleich zu haben:der TPC-C-Benchmark-Datensatz für SQL Server liegt bei etwa 1,2 Millionen Transaktionen pro Minute und war in den letzten 4 Jahren ungefähr so ​​(begrenzt durch das 64-CPU-Betriebssystemlimit). Das ist etwas in der Größenordnung von ~16.000 Transaktionen pro Sekunde . Dies ist auf Super-High-End-Maschinen, 64 CPUs, viel RAM, affinisierten Clients pro NUMA-Knoten und einem Server-kurzen Stripped-I/O-System (nur etwa 1-2 % jeder Spindel wird verwendet). Denken Sie daran, dass dies TPC-C-Transaktionen sind, also bestehen sie aus mehreren Operationen (ich denke, im Durchschnitt jeweils 4-5 Lesevorgänge und 1-2 Schreibvorgänge).

Jetzt sollten Sie diese Spitzenhardware auf Ihre tatsächliche Bereitstellung herunterskalieren und erhalten einen Anhaltspunkt, wo Sie Ihre Erwartungen für die gesamte OLTP-Transaktionsverarbeitung festlegen können .

Beim Datenupload liegt der aktuelle Weltrekord in etwa 1 TB in 30 Minuten (falls noch aktuell...). Mehrere Zehntausend Einfügungen pro Sekunde sind ziemlich ehrgeizig, aber machbar, wenn sie auf seriöser Hardware richtig ausgeführt werden. Der Artikel im Link enthält Tipps und Tricks für ETL mit hohem Durchsatz (z. B. mehrere Upload-Streams verwenden und sie mit NUMA-Knoten verbinden).

Für Ihre Situation würde ich in erster Linie zu Maßnahmen raten so finden Sie die Engpässe heraus und fragen dann konkret Fragen, wie spezifische Engpässe gelöst werden können. Ein guter Ausgangspunkt ist der Warte- und Warteschlangen-Whitepaper .