Festplatten- und RAM-Kapazitätsplanung
Das Planen der Datenträger- und Speicherkapazität für einen Datenbankserver ist eine schwarze Kunst. Mehr ist besser. Schneller ist besser.
Als allgemeine Richtlinie biete ich folgendes an:
- Sie möchten mehr Speicherplatz, als Sie jemals benötigen.
Schätzen Sie nach bestem Wissen, wie viel Speicherplatz Sie für die nächsten 3-5 Jahre benötigen, und verdoppeln Sie ihn dann.
- Sie möchten genügend RAM, um Ihre Datenbankindizes im Arbeitsspeicher zu halten, Ihre größte Abfrage mindestens zweimal zu verarbeiten und dennoch genügend Speicherplatz für einen funktionsfähigen Betriebssystem-Festplatten-Cache zu haben.
Die Indexgröße hängt von Ihrer Datenbank ab, und alles andere hängt stark von Ihrem Datensatz und Ihrer Abfrage- / Datenbankstruktur ab. Ich werde als Vorschlag "Mindestens die doppelte Größe Ihres größten Tisches" anbieten, aber beachten Sie, dass dieser Vorschlag bei wirklich umfangreichen Data-Warehousing-Vorgängen, bei denen der größte Tisch Dutzende oder Hunderte von Gigabyte umfassen kann, nicht funktioniert.
Jeder Datenbankanbieter hat einige Anweisungen zur Leistungsoptimierung Ihres Festplatten- / Speicher- / Betriebssystem-Kernels - Verbringen Sie vor der Bereitstellung einige Zeit mit dieser Dokumentation. Es wird helfen.
Workload-Benchmarking und Kapazitätsplanung
Vorausgesetzt, Sie haben noch nicht bereitgestellt ...
Viele Datenbanksysteme werden mit Benchmarking-Tools ausgeliefert -
PostgreSQL wird beispielsweise mit
pgBench ausgeliefert .
Diese Tools sollten Ihre erste Anlaufstelle beim Benchmarking der Datenbankleistung sein. Wenn möglich, sollten Sie sie auf allen neuen Datenbankservern ausführen, um ein Gefühl dafür zu bekommen, wie viel Arbeit der Datenbankserver leisten kann.
Bewaffnet mit einem rohen Benchmark, den ABSOLUTELY MEANINGLESS
wir als realistischeren Ansatz für das Benchmarking betrachten wollen: Laden Sie Ihr Datenbankschema und schreiben Sie ein Programm, das es mit Dummy-Daten auffüllt, und führen Sie dann die Abfragen Ihrer Anwendung für diese Daten aus.
Hierbei werden drei wichtige Punkte bewertet: 1. Der Datenbankserver (Hardware) 2. Der Datenbankserver (Software) 3. Ihr Datenbankdesign und die Interaktion mit (1) und (2) oben.
Beachten Sie, dass dies viel mehr Aufwand erfordert als einfache vorgefertigte Benchmarks wie pgBench
: Sie müssen Code schreiben, um das Auffüllen durchzuführen, und Sie müssen möglicherweise Code schreiben, um die Abfragen und die Berichtsausführungszeit auszuführen.
Diese Art des Testens ist auch wesentlich genauer: Da Sie mit Ihrem Schema und Ihren Abfragen arbeiten, können Sie sehen, wie diese ausgeführt werden, und es bietet Ihnen die Möglichkeit, Ihre Datenbank / Abfragen zu profilieren und zu verbessern.
Das Ergebnis dieser Benchmarks ist eine idealisierte Ansicht Ihrer Datenbank. Gehen Sie sicherheitshalber davon aus, dass Sie in Ihrer Produktionsumgebung nur 50-70% dieser Leistung erzielen (der Rest ist ein Puffer, mit dem Sie unerwartetes Wachstum, Hardwareausfälle, Änderungen der Arbeitslast usw. bewältigen können).
Es ist zu spät! Es ist in Produktion!
Sobald Ihre Systeme in Produktion sind, ist es wirklich zu spät, um ein "Benchmarking" durchzuführen. Sie können die Abfrageprotokollierung / das Timing kurz einschalten und sehen, wie lange die Ausführung dauert, und Sie können einige "Stresstest" -Abfragen für große Datenmengen ausführen, während Sie ausgeschaltet sind Std. Sie können sich auch die CPU-, RAM- und E / A-Auslastung (Festplattenbandbreite) des Systems ansehen, um eine Vorstellung davon zu erhalten, wie stark es ausgelastet ist.
Leider geben Ihnen diese Dinge nur eine Vorstellung davon, was das System tut, und eine vage Vorstellung davon, wie nahe es der Sättigung ist.
Das bringt uns zu ...
Laufende Überwachung
Alle Benchmarks der Welt werden Ihnen nicht helfen, wenn auf Ihrem System plötzlich neue / andere Nutzungsmuster auftreten.
Für bessere oder schlechtere Datenbankbereitstellungen sind sie nicht statisch: Ihre Entwickler werden Dinge ändern, Ihre Datenmenge wird wachsen (sie scheinen nie zu schrumpfen) und Ihre Benutzer werden auf irgendeine Weise verrückte Kombinationen von Ereignissen erstellen, die Sie beim Testen nie vorhergesagt haben.
Um eine ordnungsgemäße Kapazitätsplanung für Ihre Datenbank durchzuführen, müssen Sie eine Art Leistungsüberwachung implementieren, um Sie zu warnen, wenn die Datenbankleistung nicht mehr Ihren Erwartungen entspricht. An diesem Punkt können Sie Abhilfemaßnahmen in Betracht ziehen (neue Hardware, DB-Schema oder Abfrageänderungen zur Optimierung der Ressourcennutzung usw.).
Hinweis: Dies ist ein allgemeiner Leitfaden für die Dimensionierung Ihrer Datenbankhardware und die Ermittlung des möglichen Missbrauchs. Wenn Sie sich immer noch nicht sicher sind, wie Sie feststellen können, ob ein bestimmtes System Ihren Anforderungen entspricht, wenden Sie sich an einen Datenbankexperten.
Es gibt auch eine Stack Exchange-Site, die sich speziell der Datenbankverwaltung widmet: dba.stackexchange.com . Durchsuchen Sie das Fragenarchiv oder durchsuchen Sie die Tags, die für Ihr Datenbankmodul spezifisch sind, um weitere Hinweise zur Leistungsoptimierung zu erhalten.