Ich habe einige Server auf der ganzen Welt im Einsatz. Sie führen Windows 2003 x64 mit SQL Server 2005 x64 mit 6 GB RAM aus. Die Boxen haben nicht die beste (oder sogar eine akzeptable) Konfiguration, weil der Typ, der sie vor Jahren bestellt hat, nicht wirklich wusste, was er tat.
Die Boxen haben nicht genügend Arbeitsspeicher, verwenden die Auslagerungsdatei und alles verlangsamt sich. In der Regel beträgt die Bereitstellungsgebühr 5,8 GB. Wenn jemand etwas Intensives tun muss (z. B. einen Bericht erstellen), geht diese Zahl über das Dach.
Ich habe versucht, die Kräfte zu bekommen, die dazu führen, dass mehr Speicherplatz zur Verfügung steht, aber ich bekomme massiven Widerstand (z. B. die Leistung der Software zu steigern, die Kosten für all diese Server zu hoch oder nachzuweisen, dass die Box nicht über genügend Speicher verfügt usw.). ..).
Gibt es Richtlinien (oder eine Formel) dafür, wie viel RAM eine Box benötigt, die ich Nicht-Technikern präsentieren kann, damit wir endlich mehr Speicher bestellen können?
quelle
Antworten:
Nicht wirklich leicht zu sagen, da es ganz von Ihrer Nutzung und der Anwendung abhängt. Sie schöpfen einen Datenbankserver aus ... wie groß ist die Datenbank? Was sind Ihre Transaktionsstatistiken?
Die realen Einschränkungen sind in Ihrem Szenario offensichtlich. Du rennst eine Weile ohne Probleme mit 6 Gigs, dann wird getauscht und geknallt. Somit sind 6 Gigs nicht genug.
Wenn die Leistung ausreicht, um das Geschäft zu beeinträchtigen, sollten Ihre Vorgesetzten genug Klagen hören, um die Speicherkapazität zu erhöhen. Finden Sie heraus, was Ihre Zeit kostet, und ermitteln Sie dann, wie viel es kostet, den Server zu "optimieren" und Fehler bei der Optimierung zu beheben, wenn der dem Server hinzugefügte Speicher das Problem möglicherweise in Bezug auf die Speicherkosten und weniger als eine halbe Stunde löst Ausfallzeit.
Sie werden nicht genau wissen, wie viel Arbeitsspeicher Sie benötigen, bis Sie ihn tatsächlich in Ihrer realen Umgebung bereitstellen und von dort aus arbeiten.
Trotzdem möchten Sie vielleicht überprüfen, ob Ihre Anwendung wirklich der Engpass ist. Führen Sie die Windows-Leistungsüberwachung aus, um die E / A-Statistiken und den Netzwerkdurchsatz anzuzeigen. Sehen Sie sich auch Ihren Fragmentierungsgrad an ( Google ist hier ein guter Freund ). Sie können versuchen, den Code auch dann auf offensichtliche Probleme zu überprüfen, wenn eine Abfrage äußerst ineffizient ist ( erneut Google ).
Aber auch hier kommt es darauf an, wie stark sich dies auf das Geschäft auswirkt. Lohnt es sich, mehr in das Tuning zu investieren, oder ist es schon schlimm genug, zuerst Hardware darauf zu werfen und dann zu versuchen, es zu tunen?
quelle
Eine einfache Möglichkeit, um festzustellen, ob Sie mehr RAM benötigen, besteht darin, den Page Life Expectancy Perfmon Counter (Leistungsindikator für die Seitenlebenserwartung) aufzuzeichnen. Dieser Indikator gibt an, wie lange SQL Server davon ausgeht, dass Daten im Pufferpool gespeichert werden, bevor Platz für andere Daten geschaffen werden muss. Sie möchten diese Zahl so hoch wie möglich. Wenn Sie 6 GB RAM installiert haben (Sie sollten SQL auf maximal 4 GB eingestellt haben), werden Sie die Daten wahrscheinlich höchstens einige Minuten im Speicher behalten, wenn jemand einen großen Bericht ausführt, wird dieser Zahlentank angezeigt bis auf wenige Sekunden. Je mehr RAM Sie haben, desto länger können die Daten gespeichert werden und desto weniger Lesevorgänge von den Festplatten sind erforderlich.
Zum Beispiel haben die Systeme, mit denen ich im Moment arbeite, 256 GB RAM und wir behalten die Daten für ungefähr 12000 Sekunden im Speicher.
Bitte fragen Sie nicht nach einer Zielnummer, die getroffen werden soll, Sie möchten nur, dass die Zahl so hoch wie möglich ist. Ohne viel mehr über Ihre Systeme zu wissen, kann ich keine gute Nummer nennen, für die ich schießen kann.
quelle
Hmmmm. Nun, 6 Gigs sind eine anständige Menge an RAM, selbst für eine große MSSQL-Installation. Vielleicht möchten Sie tatsächlich nachsehen und sicherstellen, dass Ihr Code wirklich effizient ist. Eine 6-Gig-Transaktion ist etwas ungewöhnlich ... Ich habe an landesweiten Lohn- und Gehaltsabrechnungssystemen gearbeitet, die zum Jahresende 1099 noch keinen Gig übertroffen haben ... Und um einen oft laufen zu lassen ? Ich weiß es nicht. Mit welchen Daten arbeiten Sie?
Davon abgesehen können Sie so viel RAM in eine 64-Bit-Box packen, wie Sie möchten, und RAM ist spottbillig. Stellen Sie also so viel RAM ein, wie Sie können ein Datenbankserver.
Bearbeiten: Dies ist jetzt völlig veraltet. Ich habe MSSQL-Boxen mit 256 GB RAM.
quelle
Bevor Sie mehr Speicher (oder eine andere Komponente) kaufen, sollten Sie eine Leistungsanalyse auf dem Server durchführen. Sie können dies mit perfmon selbst tun oder Tools von Drittanbietern verwenden. Sie sollten die Leistung des Betriebssystems und des SQL-Servers analysieren. IMHO, zu oft sind wir bereit, Hardware auf ein Problem aufmerksam zu machen, bevor eine ordnungsgemäße Analyse durchgeführt wurde. Nach allem, was Sie an diesem Punkt wissen, kann es sich um ein Problem mit einer Abfrage, einer gespeicherten Prozedur, einem Ausführungsplan, einer Datenträger-E / A, einer CPU-Auslastung usw. handeln. Der Speicherdruck kann häufig ein Symptom für einen anderen Engpass im System sein.
quelle
Wie "Satanicpuppy" sagte, gibt es nicht so etwas wie zu viel RAM, aber 6 GB sollten in Ordnung sein. Vielleicht sollten Sie überlegen, was Ihr Server macht. Ich denke nicht, dass Sie ein "Hardware" -Problem haben, das sollten Sie Konzentrieren Sie sich auf Ihre SQL-Programmierung ...
quelle
Wenn es um Datenbankserver geht, gibt es nicht genügend Arbeitsspeicher. Sicher, es hängt davon ab, was sie tatsächlich tun und ausführen, aber wenn es sich um eine ständig genutzte Datenbank handelt, die viele Daten enthält und komplizierte Abfragen ausführt, können 6 GB durchaus unangemessen sein.
Ich würde damit beginnen, einen problematischen Server auf mindestens 32 oder 64 GB zu aktualisieren und herauszufinden, ob dies hilft. Wenn nicht, wenden Sie sich an die Datenbankoptimierung, die Fehlerbehebung bei Anwendungen und das Debugging. Dies alles kostet, sofern nicht ein Idiot die Datenbank entworfen hat, viel mehr als ein paar Sticks mit Arbeitsspeicher auf Serverbasis (und selbst wenn ein Idiot das Ding entworfen hat, wird das Design noch offensichtlicher) Fehler, die mit Unterstützung behoben wurden, könnten sich als ziemliche Herausforderung erweisen.
Das heißt, wie jemand anderes sagte - es könnte etwas anderes sein, das es zurückhält (abgesehen von Software-Design-Problemen), wie ein Mangel an Festplatten- oder Netzwerk-E / A-Leistung - einen DBA-Profi einzustellen, der nur die grundlegende SQL-Leistungsüberwachung für einen ausführt Tag könnte sich als nützlich erweisen.
quelle
Sie sollten mehr Indizes erstellen. Ich denke, dass im Allgemeinen die meisten Leute ihre Datenbank unterindizieren.
Dies ist immer noch ein Luftcode, den ich noch nicht vollständig getestet habe, aber er sollte Sie in die richtige Richtung bringen
http://accessadp.com/2011/08/22/missing-indexes-great-script-for-determining-roi/
quelle