Jump to content
Melde dich an, um diesen Inhalt zu abonnieren  
nahemoth

SQL Server Performance steigern

Empfohlene Beiträge

Hallo,

ich würde gerne die Performance eines MSSQL-Servers steigern. Ich habe festgestellt, dass die IO der Festplatte immer am oberen Bereich liegt. Das Datenbankfile liegt auf einem RAID-5 Verbund und das Logfile auf einem Separaten. Das Datenbankfile hat mittlerweile eine Größe von ~70GB.

Würde es hier etwas bringen, das RAID-5 gegen ein RAID-10 zu tauschen und die Datenbank auf mehrere kleine Files zu verteilen?

Oder, wo wären hier noch Ansatzpunkte zur Analyse?

 

Ich bin leider noch etwas Unerfahren auf diesem Gebiet. Hat mir hier jemand ein paar Tipps?

 

Vielen Dank!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Beim Lesen befindet sich die Rate permanent zwischen 80% und 100%, beim Schreiben hingegen schwankt sie zwischen 0% und 100%. Die Durchschnittliche Warteschlange des Datenträgers bewegt sich zwischen 0% und 25% und hat regelmässig Ausschläge bis 100%.

 

Sind das die Angaben, die Du angefragt hattest?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Moin,

 

grundsätzlich kann ein schnelleres Plattensubsystem eine SQL-Datenbank schon sehr beschleunigen. Die von dir genannten Werte lassen durchaus den Schluss zu, dass die Platten den Server ausbremsen. Es kann aber durchaus noch -zig andere Stellen geben, die eine Datenbank oder eine datenbankbasierende Applikation langsam machen, und nur wenige davon lassen sich durch Hardware-Upgrades lösen.

 

Von RAID5 auf RAID10 umzusteigen, kann etwas bringen. Sofern deine Datenbank nicht viel größer wird, könntest du bei der angegebenen Größe durchaus auch über SSD nachdenken.

 

Ob das allerdings wirklich dein Problem löst, lässt sich ohne eine intensive Analyse nicht vorhersagen.

 

Gruß, Nils

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Kann es sein, dass Fragmentierung ein Problem ist? Das Datenbankfile wuchs anfangs immer um einen recht geringen Wert, ich glaube 100mb. Ich habe diesen vor einiger Zeit auf 5GB gestellt.

Könnte es sein, dass die Datenbankdatei auf dem Datenträger verteilt ist, und das Performance im IO kostet?

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Könnte sein, weil die Platten dann immer wieder auf entferntere/verteilte Speicherblöcke springen müssen.

 

Ich kann nur aus Erfahrung sagen, dass der Unterschied zwischen einer klassischen Festplatte und einer SSD enorm ist. Das Gedöns mit dem Defragmentieren kann man sich dann auch sparen.

Wenn Geld da ist, kann ich dir die Investition nur ans Herz legen, zumal deine Database nicht wirklich riesig ist.

bearbeitet von Davidxy

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Würde dir auch ein Raid1 aus SSDs empfehlen. Mit wenig Geld Einsatz bekommst du sehr viel Performance raus. Ram schadet bei SQL Servern auch nie.

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Hm, aber die SSDs haben doch nur eine begrenzte Zahl an Lese-/Schreibzugriffen? und im Vergleich zu SAS können sie doch nur Halbduplex.

Lohnt das?

bearbeitet von nahemoth

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

"Abnutzung" entsteht nur durch die Schreibvorgänge. Die Lesevoränge belasten eine SSD nicht. Geht man von einer Schreibmenge von etwa 40 GB / Tag aus, so sollte die SSD 22 Jahre halten.

Du kannst davon ausgehen, dass die Lebensdauer auf dem Niveau einer herkömmlichen Festplatte ist.

 

Man sollte jedoch immer 10-15% Speicherplatz auf den SSD´s freilassen, weil die Performance sonst einbricht. Das brauchen die SSD-Controller für ihre Verwaltungsaufgaben. (Wear-Levelling, TRIM, Garbage Collection).

Sollte man also vor dem Kauf (Festplattengrösse) einkalkulieren.

 

Andere Vorteile sind neben der Geschwindigkeit auch die Geräuschentwicklung (keine, weil keine mechanischen Bauteile), dem geringeren Stromverbrauch und die sehr geringe Wärmeentwicklung.

Keine mechanischen Bauteile die Hitze erzeugen....

bearbeitet von Davidxy

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Keine Sorge: Die Übertragungsraten von SSDs sind deutlich höher, als von Festplatten. Aber das ist nicht der entscheidende Faktor. Bei Datenbanksystemen geht es nicht um linearen Datendurchsatz, sondern um Latenz und Operationen pro Sekunde (IOPS). Was Du wirklich übersiehst, ist die Tatsache, dass bei konventionellen Festplatten die Leistung von der Umdrehungszahl und der zugehörigen Elektronik abhängt. So erreicht selbst eine 15k HDD nur <350 IOPS. Da bei SSDs keine Datenscheiben rotieren, haben sie keine relevante Latenz. Sie können 100.000 IOPS und mehr erreichen. Das ist im Vergleich ein Handwagen zum Ziehen gegen einen Sportwagen. Du bräuchtest hunderte Festplatten, um annähernd die gleiche Leistung wie eine einzelne SSD zu erreichen.

 

Achte nur darauf, dass Du Server-taugliche SSDs samt RAID-Controller einbaust, die auch im RAID TRIM unterstützen und die Partition sauber ausrichten.

bearbeitet von Daniel -MSFT-

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

Ich nur nochmals wiederholen: Storage ist wichtig, Optimierungen in der DB sollten aber zuerst ausgereizt werden.

Die Geschwindigkeit  mancher Abfragen lassen sich mit passenden Indizes um ein vielfaches Steigern. Auch die I/O-Rate sinkt durch Indizes da die Anzahl der Full Table Scans reduziert wird. 

Tabellen sollten auch regelmäßig reorganisiert und die Statistiken erneuert werden..  

bearbeitet von zahni

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen

An dem Design der Datenbank kann ich leider nichts ändern, das gibt mir der Softwarehersteller vor.

Mein Problem ist, dass die Anwender an manchen Tagen sagen, dass das Programm wiedermal sehr langsam ist. Den Terminalserver auf dem die Anwendung läuft konnte ich ausschliessen. Auch von Netzwerkseite her ist, laut unseren Technikern, noch Platz nach oben.

Mir ist dann ebn aufgefallen, dass die IOs die Platte ziemlich an die Grenze bringen.

 

Kann es sein, dass Fragmentierung ein Problem ist? Das Datenbankfile wuchs anfangs immer um einen recht geringen Wert, ich glaube 100mb. Ich habe diesen vor einiger Zeit auf 5GB gestellt. Könnte es sein, dass die Datenbankdatei auf dem Datenträger verteilt ist, und das Performance im IO kostet?

 

wie könnte ich dies korrigieren? gibt es hier eine Möglichkeit die Datei zu "defragmentieren"? genügt es die DB offline zu nehmen und sie dann auf einen anderen Datenträger zu verschieben und dann wieder zurück zu kopieren?

Ich würde erst gerne die Softwarefehler ausschliessen, vor ich neue Hardware beschaffe.

 

Danke!

Diesen Beitrag teilen


Link zum Beitrag
Auf anderen Seiten teilen
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
Melde dich an, um diesen Inhalt zu abonnieren  

×