Der Microsoft SQL-Server kann auf die unterschiedlichsten Arten installiert werden. Bei den meisten Kunden "reicht" die Installation mit den Standardwerten völlig aus. Sollte allerdings die grösstmögliche Performance erreicht werden, sind die nachfolgenden Empfehlungen bzw. Tipps zu beachten.
Hardware
Die Hardware ist einer der Schlüsselfaktoren, wie schnell Daten von einem SQL-Server gelesen bzw. geschrieben werden können. Zwar ist die Geschwindigkeit beim Schreiben nicht so entscheidend, hingegen kann der Unterschied erheblich spürbar beim Lesen von Datein sein.
Harddisks
Wenn immer möglich sollten SSD Harddisks verwendet werden (anstelle von HDD Disks). Dabei ist vor allem auf eine hohe Lese- und Schreibgeschwindigkeit zu achten (möglichst hoch). Ebenfalls nicht vernachlässigt werden darf die sogenannte Latency (möglichst tief). Ein gutes Preis- / Leistungsverhältnis bietet aktuell (25.04.2021) die SSD 980 PRO NVMe M.2 2280 2 TB von Samsung.
Raid-System
Um eine bestmögliche Balance zwischen Performance und Ausfallsicherheit zu erreichen sind die folgenden RAID-System zu verwenden:
Datafiles: RAID 10 oder RAID 5
Logfiles: RAID 1 oder RAID 10
Tempfiles: RAID 10 oder RAID 1, notfalls auch RAID 0
Blocksize
Ein Datenblock (kurz Block oder Sektor genannt) ist die kleinste in einem Zugriff les- oder schreibbare Einheit einer Festplatte. Die optimale Blockgrösse für einen SQL-Server beträgt 64 KB und unterscheidet sich daher von den Standardeinstellungen von Windows (4 KB).
Software
Power Plan
Die Einstellungen für den Energieplan sollten auf "High Performance" gestellt werden. Damit wird unter anderem sichergestellt, dass die Prozessoren ständig mit der höchsten Leistung zur Verfügung stehen.
Mit dem folgenden Befehl kann aus einem Command Line Fenster der Power Plan umgestellt werden:
powercfg -setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
Background-Services
Windows-Server können so eingestellt werden, dass diese vor allem für Background-Services optimiert werden. Dazu ist der folgende Einstellung in der Registry notwendig:
Key: HKLM\SYSTEM\CurrentControlSet\Control\PriorityControl
Schlüsel Win32PrioritySeparation
Typ: DWORD
Wert: 24
Mit dem folgenden Powershell-Script kann dieser Eintrag erstellt werden:
Set-ItemProperty -path HKLM:\SYSTEM\CurrentControlSet\Control\PriorityControl -name Win32PrioritySeparation -Type DWORD -Value 24
Instant File Initialization
Daten- und Protokolldateien werden standardmäßig initialisiert, um vorhandene Daten zu überschreiben, die von zuvor gelöschten Dateien auf dem Datenträger zurückgelassen wurden. Daten- und Protokolldateien werden erstmals durch Ausfüllen der Dateien mit Nullen initialisiert, wenn eine der folgenden Vorgänge durchgeführt wird:
- Erstellen einer Datenbank
- Hinzufügen von Daten- oder Protokolldateien zu einer vorhandenen Datenbank
- Vergrössern einer vorhanden Datei (einschließlich Vorgängen zur automatischen Vergrösserung).
- Wiederherstellen einer Datenbank oder Dateigruppe
In SQL Server ermöglicht die schnelle Dateiinitialisierung (IFI) eine schnellere Ausführung der zuvor erwähnten Dateivorgänge, da sie verwendeten Speicherplatz freigibt, ohne diesen mit Nullen zu füllen. Stattdessen wird der Datenträgerinhalt überschrieben, wenn neue Daten an die Dateien geschrieben werden. Protokolldateien können nicht sofort initialisiert werden.
Um IFI zu aktivieren kann etweder beim Setup des SQL-Server das Kontrollkästchen "SQL Server-Datenbank-Engine-Dienst Berechtigung zum Ausführen von Volumewartungstasks gewähren" bzw. "Grant Perform Volume Maintenance Task privilege to SQL Server Database Engine Service". Um IFI nachträglich zu aktivieren sind folgende Schritte notwendig:
- Auf dem Computer, auf dem die Datendatei erstellt wird, die Anwendung für lokale Sicherheitsrichtlinien öffnen (
secpol.msc) - Im linken Bereich Lokale Richtlinien erweitern, und auf Zuweisen von Benutzerrechten klicken.
- Im rechten Bereich auf Durchführen von Volumewartungsaufgaben doppelklicken
- Auf Benutzer oder Gruppe hinzufügen klicken, und das Konto, über das der SQL Server-Dienst ausgeführt wird, hinzufügen
- Auf Übernehmen klicken und alle Dialogfelder von Lokale Sicherheitsrichtlinie schliessen
- SQL Server-Dienst neu starten

Sperren von Seiten im Speicher aktivieren (Locking Pages in Memory)
Mit dieser Windows-Richtlinie werden die Konten bestimmt, die einen Prozess zum Speichern von Daten im physischen Speicher verwenden können, um das systemgesteuerte Auslagern der Daten in den virtuellen Arbeitsspeicher zu vermeiden.
Durch Sperren von Seiten im Arbeitsspeicher kann die Leistung bei der Auslagerung von Arbeitsspeicherdaten auf die Festplatte gesteigert werden.
Sofern der SQL-Server in der Version Standard oder Enterprise verwendet wird, kann diese Option aktiviert werden.
Dazu sind die gleichen Schritte wie bei "Instant File Initialization" notwendig, allerdings muss die Richtlinie "Sperren von Seiten im Speicher" bzw. "Lock pages in Memory" ausgewählt werden.
SQL Server Konfiguration
Bei der Installation des SQL-Servers ist vor allem die Konfiguration der Dateiablage von entscheidender Bedeutung.
Datenverezeichnis
Die Benutzerdatenbanken sowie die Log-Dateien müssen zwingend auf unterschiedlichen Festplatten gelegt werden (siehe auch RAID-Konfiguration). Sofern möglich sollte auch die Temp-Datenbank auf eine eigene Festplatte ausgelagert werden.
Die Backups können wenn es nicht anders geht auch auf der Festplatte liegen, auf der die Benutzerdatenbanken sind. Allerdings ist je nach Backup-Konzept mit Performance-Einschränkungen zu rechnen.
Anzahl TempDB
Die Systemdatenbank tempdb ist eine globale Ressource und steht allen Benutzern zur Verfügung, die mit einer Instanz von SQL Server verbunden sind.
Vorgänge in tempdb werden minimal protokolliert, sodass ein Rollback für Transaktionen ausgeführt werden kann. tempdb wird bei jedem Start von SQL Server neu erstellt, sodass das System immer mit einer bereinigten Kopie der Datenbank startet. Temporäre Tabellen und gespeicherte Prozeduren werden beim Trennen der Verbindung automatisch gelöscht; es sind keine Verbindungen aktiv, wenn das System heruntergefahren wird.
Zwischen einzelnen SQL Server-Sitzungen wird also niemals etwas in tempdb gespeichert. Sicherungs- und Wiederherstellungsvorgänge sind für tempdb nicht zulässig.
Die optimale Anzahl an TempDBs kann wie folgt berechnet werden:
Wenn Anzahl logischer Kerne > 8 dann 8 sonst Anzahl logischer Kerne
Wenn Hyper-Threading aktiviert ist, dann ist die Anzahl der logischen Kerne = physische Kerne * 2
Kommentare
0 Kommentare
Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.