Ich erstelle eine Datenbank mit etwa 30 Tabellen, wobei jede Tabelle zig Millionen Zeilen und jede Tabelle eine einzelne wichtige Spalte und eine Primär- / Fremdschlüsselspalte enthält, um die Abfrageeffizienz angesichts hoher Anforderungen zu maximieren Aktualisierungen und Einfügungen sowie häufige Verwendung von Clustered-Indizes. Zwei der Tabellen enthalten Textdaten variabler Länge, von denen eine Hunderte Millionen Zeilen enthält, der Rest jedoch nur numerische Daten.
Da ich wirklich den letzten Tropfen der verfügbaren Hardware (etwa 64 GB RAM, eine sehr schnelle SSD und 16 Kerne) ausnutzen möchte, habe ich mir überlegt, jeder Tabelle eine eigene Datei zuzuweisen, egal ob Ich verbinde auf 2, 3, 4, 5 oder mehr Tabellen, jede Tabelle wird immer mit einem separaten Thread gelesen und die Struktur jeder Datei wird eng mit dem Tabelleninhalt abgestimmt, was hoffentlich die Fragmentierung minimieren und schneller machen würde für SQL Server zum Inhalt einer beliebigen Tabelle hinzufügen.
Eine Einschränkung, ich bin auf SQL Server 2008 R2 Web Edition stecken . Das heißt, ich kann die automatische horizontale Partitionierung nicht verwenden, was eine Leistungssteigerung ausschließt.
Maximiert die Verwendung einer Datei pro Tabelle tatsächlich die Leistung, oder übersehen ich die Eigenschaften des integrierten SQL Server-Moduls, die dies überflüssig machen würden?
Zweitens, wenn die Verwendung einer Datei pro Tabelle von Vorteil ist, warum kann create table
ich die Tabelle dann nur einer Dateigruppe und nicht einer bestimmten logischen Datei zuordnen? In diesem Fall müsste ich für jede Datei in meinem Szenario eine eigene Dateigruppe erstellen, was darauf hindeutet, dass SQL Server möglicherweise nicht die Vorteile sieht, von denen ich annehme, dass sie sich aus dem ergeben, was ich vorschlage.