Dieser Artikel ist gültig für Installationen mit SQL Server 2008 R2 und SQL Server 2012, Windows Server 2008 R2 und Windows Server 2012 sowie SharePoint Server 2010 und SharePoint Server 2013.

Im Web gibt bereits viele Artikel zu diesem Thema. Allerdings hat sich kaum einer die Mühe gemacht, zu erklären, wo und wie die besagten Einstellungen vorgenommen werden müssen. Deshalb habe ich mich entschieden, dies mit diesem Post möglichst ausführlich nachzuholen.

Auf dem SQL Server werden fast alle Daten von SharePoint abgelegt. Da erstaunt es wenig, dass die Performance des SQL Server direkten Einfluss auf die Geschwindigkeit von SharePoint hat. Trotzdem wird dieser Faktor sehr oft ausser Acht gelassen, nicht zuletzt, weil hinter einer Optimierung oftmals grosse Kosten vermutet werden. Natürlich braucht es auch hardwareseitig ein gewisses Minimum an Leistung. Nachstehend einige Tipps um die Performance ohne zusätzliche Kosten spürbar zu verbessern.

Konfiguration auf Ebene Windows Server

Windows Server Performance Options
Standardmässig ist Let Windows choose what’s best for my computer eingestellt. In den meisten Fällen wird der Server für eine schöne Darstellung optimiert, was allerdings bei einem Server ziemlich unwichtig ist. Der Wert kann hier auf Adjust for best performance gesetzt werden:
Rechtsklick auf Computer > Properties > Advanced system settings > Performance > Settings > Visual Effects
2013-04-02_125748

Page File Grösse festlegen
Das Page File wird standardmässig durch Windows verwaltet. In den meisten Fällen ist es sinnvoll, die Grösse und den Speicherort selbst zu bestimmen.
Computer > Properties > Advanced system settings > Performance > Settings > Advanced > Virtual Memory > Settings
Die Grösse des Pagefiles sollte dem Faktor 1.5 der zugewiesenen RAM des Servers entsprechen. Beispiel: 8192 MB RAM x 1.5 = 12288 MB Pagefile
2013-04-02_125750

Power Plan anpassen
Standardmässig ist der Balanced Mode aktiviert. Für den Serverbetrieb sollte allerdings High Performance genutzt werden, da dieser einen bis zu 15% höheren Durchsatz zulässt.
Navigieren Sie zu Start > Control Panel > Power Options und stellen Sie dort auf High Performance um.
2013-04-02_125751
Sollte die Option High Performance deaktiviert sein, dann klicken Sie auf Change settings that are currently unavailable. Anschliessend kann die Änderung vorgenommen werden.
2013-04-02_125752

Allocation Unit Size optimieren
Die NTFS allocation Unit Size sollte auf 64K angepasst werden. Die aktuellen Einstellungen können Sie sich anzeigen lassen, indem Sie das Command Line Tool (cmd) mit administrativen Rechten öffnen und folgenden Befehl eingeben:
chkdsk D: (D: entspricht der gewünschten Partition)
Im untersten Abschnitt der Ausgabe finden Sie die gewünschte Information.

Um die NTFS allocation Unit Size für die Partition D: auf 64K zu ändern, setzen Sie folgenden Befehl im Command Line Tool (cmd) ab:
D: /Q /FS:NTFS /A:64K /V:Data /Y
Vorsicht: Mit diesem Befehl wird das Laufwerk formatiert!

Erläuterung
D: = Laufwerksbuchstabe der gewünschten Partition (in diesem Beispiel D:)
/Q = Quick Format
/FS = File System (in diesem Beispiel NTFS)
/A = Allocation Unit Size (in diesem Beispiel 64K)
/V = Volume Label (in diesem Beispiel heisst das Volume “Data”)
/Y = Bestätigt die Abfrage zum Formatieren der Disk

Windows Firewall
Konfiguration der Windows Firewall gemäss http://www.techtask.com/sharepoint2010/windows-firewall-fur-den-sql-server-zugriff-konfigurieren/

Datenbank Volumes
Die Datenbank Volumes sollten in separate LUNs (Logical Unit Numbers) aufgeteilt werden, idealerweise bestehend aus eigenständigen physikalischen Disks.

Priorisierung der Daten bei unterschiedlich schnellen Disks (in absteigender Reihenfolge)

  • 1. TempDB Data Files und Transaction Logs
  • 2. Content Datenbank Transaction Logs
  • 3. Search Datenbanken
  • 4. Content Datenbank Data Files

Werden in der Farm vorallem Daten gelesen und weniger geschrieben, dann sind die Positionen 2 und 4 gegeneinander auszutauschen.
Weiter sollten die Transaction Logs der Search Datenbank von den Transaction Logs der Content Datenbanken getrennt werden.

Konfiguration auf Ebene SQL Server
  • SharePoint sollte immer auf einem dedizierten SQL Server oder mind. einer dedizierten SQL Instanz betrieben werden.
  • Verwenden einer Named SQL Instanz.
  • Als Authentifizierungsmethode für die SQL Istanz sollte Windows Authentication gewählt werden.
  • Für grössere Suchanwendungen ist eine separate SQL Instanz für die Suche zu verwenden.
  • Verwendung des aktuellsten Service Packs und den aktuellsten Patches bei der SQL Server Installation.
  • Die SQL Collation für SharePoint ist Latin1_General_CI_AS_KS_WS.
  • Erstellung der SQL Datenbanken mit PowerShell, um GUIDs in den Datenbanknamen zu vermeiden.
  • Der SQL Service Account benötigt die Rechte Lock Pages in Memory (siehe http://support.microsoft.com/kb/918483/en-us) und Perform Volume Maintenance Tasks (gpedit.msc > Computer Configuration\Windows Settings\Security Settings\Local Policies\User Rights Assignments > Perform volume maintenance tasks)
  • Auto Create Statistics und Auto Update Statistics auf False belassen

Setzen des minimalen und maximalen Server Memory
Microsoft SQL Server Management Studio > Object Explorer > Rechtsklick auf servername\instanz > Properties > Memory
Setzen des Minimum server memory und des Maximum server memory Wertes in MB. Achtung: Beim Setzen des miximalen Server Memory sollten ca. 3 GB für den Betireb Betriebssystems abgezogen werden.
2013-04-02_130031

Fill Factor und Backup Compression
Microsoft SQL Server Management Studio > Object Explorer > Right click on servername\instace > Properties > Database Settings
Ändern Sie den Wert des Default index fill factor auf 80 und setzen Sie ein Häkchen bei Compress Backup, um die Backupkompression zu aktiveren.
2013-04-02_130210

Max Degree of Parallelism
Diese Einstellung legt die Anzahl Prozessoren fest, welche für die Verarbeitung einer Abfrage (Query) eingesetzt werden.
Ein hoher MAXDOP Wert wird in der Regel eingesetzt, wenn die Anzahl gleichzeitig zu verarbeitender Abfragen eher gering ist. Ist die Anzahl gleichzeitig zu verarbeitender Abfragen eher hoch, wird in der Regel ein tiefer MAXDOP Wert gesetzt.
Da SharePoint hat eine sehr hohe Anzahl an gleichzeitig zu verarbeitenden Abfragen aufweist, ist ein möglichst tiefer Wert zu setzen, deshalb ist der optimale Wert für eine SharePoint Umgebung 1.
Ist der Wert auf 0 gesetzt, kann der SQL Server alle verfügbaren Prozessoren einsetzen, um eine einzelne Abfrage zu verarbeiten.
Microsoft SQL Server Management Studio > Object Explorer > Right click on servername\instanz > Properties > Advanced
Setzen Sie den Wert Max Degree of Parallelism auf 1
2013-04-02_130342

Trace Flag 1117
Durch das Setzen des Traceflags 1117 wird das gleichmässige Wachstum aller Data Files gewährleistet.
Navigieren Sie zu Start > Microsoft SQL Server 2008 R2 > Configuration Tools > SQL Server Configuration Manager > SQL Server Configuration Manager (local) > SQL Server Services > SQL Server (Instance name) > Properties > Advanced > Startup Parameters > und fügen Sie am Ende ;-T1117 an.
2013-04-02_130638

Konfiguration der Datenbanken

Datenbankanpassungen allgemein
Pregrow
Vergrössern der Content Datenbank auf die erwartete Grösse um die Fragmentierung zu minimieren.

Autogrowth
Sollte aktiviert blieben. Bei kleineren Datenbankgrössen sollte der Autogrowth Wert auf 256 MB oder 512 MB eingestellt werden. Bei grösseren Datenbanken, ab ca. 5 GB, ist 10% ein angemessener Wert.

Anzahl Data Files
Die Anzahl der Data Files sollte der Anzahl Processor Cores entsprechen (Minimum 4/Maximum 8)

Recovery Model
In den meisten Fällen kann das Recovery Model Simple verwendet werden. Full sollte vorallem dann eingesetzt werden, wenn eine Backupstrategie mit regelmässigen Backups der Transaction Logs geplant ist oder eine High Availability Konfiguration mit Log Shipping oder Database Mirroring vorgesehen ist.

ModelDB anpassen

  • Die Initial Size des MDF Files sollte auf einen sinnvollen Schätzwert angepasst werden.
  • Die Initial Size des LDF Files sollte auf 25% der festgelegten MDF Initial Size konfiguriert werden. Dabei sollte darauf geachtet werden, dass der LDF-Wert durch acht aus dem MDF-Wert geteilt werden kann.
  • Um optimale Wachstumsgrössen zu erreichen, sollte die Autogrowth-Einstellung sinnvoll gesetzt werden. Dieser Wert beträgt in der Regel 25-50% der Initial File Size.

TempDB anpassen

  • Die Inital Size sollte ca. auf 25% der Grösse der grössten Content DB festgelegt werden.
  • Aufteilung in mehrere Data Files. Die Anzahl der Data Files sollte der Anzahl Processor Cores entsprechen (Minimum 4/Maximum 8)
  • Die Data File Size aller Data Files müssen alle die gleiche Grösse haben.
  • Der Autogrowth Wert auf 10% der vergebenen TempDB Grösse setzen, jedoch als fixen Wert in MB.

Maintenance Plan
Daily Full Backup der Content Datenbanken inkl. Consistency Check
Transaction Log Backups alle 30 Minuten
Wöchentliches Backup der System Datenbanken

Antivirus

Die SQL Server Data, Transaction Log und Backup Verzeichnisse sind vom Virenscanner auszuschliessen.

Konfiguration der SharePoint Server
  • Content Datenbanken sollten nicht grösser als 200 GB sein, da Backups/Restores ansonsten sehr lange dauern können.
  • Nicht mehr als 5’000 Site Collections pro Content Datenbank.
  • Setzen von Quotas auf SharePoint Web Application Level.

SQL Alias
Auf allen SharePoint Servern sollte anstelle des tatsächlichen SQL Server- und Instanznamen ein SQL Alias hinterlegt werden. Dies ermöglicht zu einem späteren Zeitpunkt auf einfache Art und Weise eine Migration des SQL Servers.
Das Erstellen eines SQL Alias wird hier beschrieben: http://www.techtask.com/sharepoint2010/sql-alias-fur-sharepoint-web-applikationen-erstellen/