Wie sind Ihre Dateien / Dateigruppen eingerichtet?
Ich werde mich plagiieren :
Noch ein Gedanke zu IO: Wir haben sorgfältig darauf geachtet, unsere am häufigsten verwendeten Tabellen für Dateigruppen mit mehreren Dateien einzurichten. Eine der Leistungsverbesserungen besteht darin, dass SQL Anforderungen an jede Datei in der Dateigruppe weiterleitet. Wenn sich BigOverUsedTable also in FileGroup1 befindet und FileGroup1 vier Dateien enthält und Ihre Datenbank über 8 Kerne verfügt, werden tatsächlich vier Kerne für die Auswahl verwendet große Zahl knirscht böse Abfrage von BigOverUsedTable "- während sonst nur eine CPU verwendet wird. Wir haben diese Idee aus diesem MSDN-Artikel:
http://msdn.microsoft.com/en-us/library/ms944351.aspx
Von TFA:
"Dateigruppen verwenden parallele Threads, um den Datenzugriff zu verbessern. Wenn nacheinander auf eine Tabelle zugegriffen wird, erstellt das System für jede Datei parallel einen separaten Thread. Wenn das System einen Tabellenscan für eine Tabelle in einer Dateigruppe mit vier Dateien durchführt, werden vier separate verwendet Threads zum parallelen Lesen der Daten. Im Allgemeinen verbessert die Verwendung mehrerer Dateien auf separaten Datenträgern die Leistung. Zu viele Dateien in einer Dateigruppe können zu viele parallele Threads verursachen und Engpässe verursachen. "
Aufgrund dieses Hinweises haben wir vier Dateien in unserer Dateigruppe auf einem 8-Kern-Computer. Es funktioniert gut.
Bearbeiten: Dies hat jetzt eine andere (möglicherweise) bessere Antwort. Die Grafiken waren nicht maßstabsgetreu - wenn Sie genau hinschauen, ist jeder Prozessor tatsächlich zu etwa 20% ausgelastet, wie uzbones hervorhebt.
Bearbeiten: Wir können tatsächlich feststellen, dass die Verwendung mehrerer Dateigruppengruppen hilfreich ist, da wir nicht alle unsere Tabellen mit vier Dateien in die Dateigruppe eingefügt haben. Große Abfragen in der Dateigruppe "Einzeldatei" verwenden nur eine CPU, aber Abfragen in der Tabelle in der Dateigruppe mit vier Dateien treffen 4 CPUs.