Praktische Grenzen der SQL-Server-Datenbank

7

Ich richte eine Datenbank ein, von der ich annehme, dass sie ziemlich groß ist und für Berechnungen und Datenspeicherung verwendet wird. Es wird eine Tabelle mit vielleicht 10 Feldern sein, die einen Primärschlüssel und zwei Fremdschlüssel für sich selbst enthält. Ich gehe davon aus, dass täglich etwa eine Milliarde Datensätze hinzugefügt werden.

Jeder Datensatz sollte ziemlich klein sein, und ich werde hauptsächlich Inserts machen. Mit jedem Einfügen muss ich ein einfaches Update für ein oder zwei Felder eines verbundenen Datensatzes machen. Alle Abfragen sollten relativ einfach sein.

Bei welcher Größe fange ich an, Leistungsprobleme mit SQL-Server zu bekommen? Ich habe erwähnt, vldb Systeme, aber auch gehört, dass sie ein echter Schmerz sein können. Gibt es eine Schwelle, wo ich anfangen sollte, das zu betrachten? Gibt es eine bessere db als sql-Server, die für diese Art von Sache entwickelt wurde?

    
captncraig 14.12.2009, 18:18
quelle

4 Antworten

22

Wenn Sie über Transaktionsraten von über 10k / sec sprechen, sollten Sie in Foren keine Ratschläge geben ... Das ist nahe an der TPC-C-Benchmark-Leistung auf 32- und 64-Wege-Systemen, die Millionen kosten.

>

Bei welcher Größe werden Sie Probleme bekommen?

Mit einem guten Datenmodell und Schemadesign wird ein ordnungsgemäß geplanter und mit der richtigen Kapazität geplanter Server für 1 Milliarde keine Probleme verursachen. Aufzeichnungen pro Tag. Die neuesten veröffentlichten SQL Server-Benchmarks liegen bei ca. 1,2 mil / min. Das sind etwa 16.000 Transaktionen pro Sekunde, bei einem Systempreis von USD ~ 6 Mio. im Jahr 2005 (64-Wege-Superdome). Um 10k pro Sekunde für Ihre geplante Last zu erreichen, brauchen Sie keinen Superdome, aber Sie werden ein ziemlich bulliges System (mindestens 16-fach wahrscheinlich) und besonders ein sehr, sehr gutes I / O-Subsystem brauchen. Wenn man die Hüllkurven-Kapazitätsplanung rückgängig macht, betrachtet man üblicherweise 1 Kt / Sek. Pro HBA und 4 CPU-Kerne, um den HBA zu speisen. Und Sie werden ziemlich viele Datenbank-Clients (Anwendung Mid-Tiers) benötigen, um 1 Milliarde zu füttern. Datensätze pro Tag in die Datenbank. Ich behaupte nicht, dass ich hier Ihre Kapazitätsplanung gemacht habe, aber ich wollte Ihnen nur einen Überblick darüber geben, worüber wir sprechen. Dies ist ein Multi-Millionen-Dollar-Projekt, und so etwas wird nicht entworfen, indem man in Foren Ratschläge gibt.

    
Remus Rusanu 14.12.2009, 18:22
quelle
11

Wenn Sie nicht so groß wie Google in der Art des großen Index sprechen, werden die Enterprise-Datenbanken wie SQL Server oder Oracle problemlos funktionieren.

James Devlin bei Coding the Wheel fasste es gut zusammen (obwohl das so ist) mehr von einem Vergleich zwischen freien Datenbanken wie MySQL mit Oracle / SQL Server

  

Heutzutage denke ich gerne an SQL Server und Oracle als die Todessterne des relationalen Datenbankuniversums. Extrem stark. Monolithisch. Brillant. Komplex fast jenseits der Fähigkeit eines einzelnen menschlichen Geistes zu verstehen. Und eine monumentale Geldverschwendung, außer in diesen seltenen Situationen, in denen du tatsächlich einen Planeten zerstören musst.

Was die Leistung angeht, hängt alles von Ihrer Indexierungsstrategie ab. Inserts sind hier wirklich der Flaschenhals, da die Datensätze indiziert werden müssen, sobald sie eingehen, je mehr Indexierung Sie haben, desto länger dauert das Einfügen.

Im Fall von etwas wie dem Google-Index, lesen Sie auf "Big Table", es ist interessant, wie Google es eingerichtet hat, Cluster von Servern zu verwenden, um die Suche nach enormen Datenmengen in Millisekunden durchzuführen.

    
Neil N 14.12.2009 18:22
quelle
5

Es kann getan werden, aber angesichts Ihrer Hardware-Kosten und Pläne erhalten MS in die Dinge für Sie aus. Es wird ein Bruchteil Ihrer Hardwarekosten sein.

Das sagen Paul Nielson bloggte über 35k TPS (3 Milliarden Zeilen pro Tag) vor zwei Jahren. Kommentare, die es wert sind, gelesen zu werden und etwas von dem zu reflektieren, was Remus gesagt hat

    
gbn 14.12.2009 19:38
quelle
4

Die Größe der Datenbank selbst verursacht kein Leistungsproblem. Praktische Probleme bei der Datenbankgröße ergeben sich aus Betriebs- / Wartungsproblemen.

Zum Beispiel:

  1. Die Defragmentierung und das erneute Erstellen von Indizes dauern zu lange.
  2. Sicherungen dauern zu lange oder belegen zu viel Speicherplatz.
  3. Datenbankwiederherstellungen können im Falle eines Ausfalls nicht schnell genug durchgeführt werden.
  4. Zukünftige Änderungen an den Datenbanktabellen dauern zu lange.

Ich würde empfehlen, von Anfang an eine Partitionierung durchzuführen. Dies kann SQL Server-Partitionierung, Anwendungspartitionierung (z. B. eine Tabelle pro Monat), Archivierung (z. B. in eine andere Datenbank) sein.

Ich glaube, dass diese Probleme in jedem Datenbankprodukt auftreten.

Achten Sie außerdem darauf, dass die Größe der Transaktionsprotokolldateien berücksichtigt wird.

    
Darryl Peterson 14.12.2009 18:43
quelle

Tags und Links