Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Partitionierte SQL Server 2008-Tabelle und Parallelität

Partitionieren ist nie eine Option zur Leistungssteigerung. Das Beste, worauf Sie hoffen können, ist eine Leistung auf Augenhöhe mit einer nicht partitionierten Tabelle. Normalerweise erhalten Sie eine Regression, die mit der Anzahl der Partitionen zunimmt. Für die Leistung benötigen Sie Indizes, keine Partitionen. Partitionen sind für Datenverwaltungsvorgänge gedacht:ETL, Archivierung usw. Einige behaupten, dass die Eliminierung von Partitionen ein möglicher Leistungsgewinn ist, aber für alles, was die Eliminierung von Partitionen bedeuten kann, kann das Platzieren des führenden Indexschlüssels in derselben Spalte wie die Partitionierungsspalte zu viel besseren Ergebnissen führen.

Diese Abfrage benötigt einen Index für State . Andernfalls handelt es sich um einen Tabellenscan, bei dem die gesamte Tabelle gescannt wird. Ein Tabellenscan über eine partitionierte Tabelle ist immer langsamer als ein Scan über eine nicht partitionierte Tabelle gleicher Größe. Der Index selbst kann auf dasselbe Partitionsschema ausgerichtet werden, aber der führende Schlüssel muss State sein .

Parallelität hat nichts mit Partitionierung zu tun, trotz des weit verbreiteten Missverständnisses des Gegenteils. Sowohl partitionierte als auch nicht partitionierte Bereichsscans können einen parallelen Operator verwenden, dies ist die Entscheidung des Abfrageoptimierers.

Nein

Ein Index hilft. Wenn der Index ausgerichtet werden muss, muss er partitioniert werden. Ein nicht partitionierter Index ist schneller als ein partitionierter, aber die Indexausrichtungsanforderung für Ein-/Ausschaltvorgänge kann nicht umgangen werden.

Wenn Sie sich mit der Partitionierung befassen, sollte dies daran liegen, dass Sie schnelle Ein- und Ausschaltvorgänge durchführen müssen, um alte Daten nach Ablauf der Aufbewahrungsrichtlinie oder ähnlichem zu löschen. Für die Leistung müssen Sie sich die Indizes ansehen, nicht die Partitionierung.