Frage

Ich bin der Umgang mit Datenbank-Tabellen mit mehreren zehn Millionen Zeilen (mit dem Potenzial, die Hunderte von Millionen im Laufe der Zeit zu gehen), und bin auf der Suche auf der Umsetzung der Datenbankpartitionierung zu versuchen, die Leistung stabil zu halten, wie die Zeilenanzahl erhöht. Dies ist, was würde ich tun:

ich habe eine Tabelle, die speichert Tiere. Eines der Felder ist die AnimalType (d Vogel / Fisch / Katze / Hund). Ich würde jede AnimalType wie eine separate Partition zu sein, denn 99% der Anfragen immer nur eine AnimalType beziehen und es ist in etwa die gleiche Menge an AnimalTypes in der Tabelle (dh 1000 Fisch, 1000 Vögel, 1000 Hunde), so bedeutet dies die Partitionen sollten schön und gleichmäßig verteilt sein. Allerdings gibt es viel von Tierarten, und ich will nicht gehen und manuell die Hunderte von Partitionen für jeden AnimalType erstellen und dann eine neue AnimalType jedes Mal eingegeben haben ein neues erstellen Partition.

Deshalb, was ich möchte, ist eine Möglichkeit, SQL Server zu sagen, basierend auf AnimalType zu partitionieren. Wenn bereits eine Partition für die AnimalType ist, verwenden Sie die Partition, sonst SQL Server wird automatisch eine neue Partition erstellen.

Es klingt einfach genug, aber ich kann nicht einen Weg zu finden, scheinen dies zu tun. Ist es möglich?

Alternativ , was sind einige andere Methoden Tabellenzugriffsgeschwindigkeiten schön und schnell zu halten? Ich möchte etwas vermeiden, die nur manuell Sachen in mehreren Tabellen bewegt, wie ältere Datensätze in eine Geschichte Stil Tisch bewegen, da es das Potential für Abfragen sind Daten aus der vollständigen Datensatz müssen und daher wird dies nicht wirklich Hilfe. Ich habe bereits einige grundlegende Indizes haben, die erheblich dazu beitragen.

War es hilfreich?

Lösung

Das Partitionieren ist eine Lösung für die Speicherprobleme, dh. bestimmen auf welche Dateigruppendaten werden auf einem Feld Wert basiert entfernt. Auf seiner eigenen, gibt es keinen Vorteil echte Leistung, in der Tat tatsächlich verlangsamt es fragt nach unten die meiste Zeit, weil neue Partition Standort Betreiber hinzugefügt werden müssen. Die einzige Möglichkeit, Anfragen zu erzwingen nur eine Partition zu prüfen, ist die $ PARTITION Syntax, und dies kann nicht in realen Anwendungen Szenarien verwendet werden. Abfragen, die nur eine Partition suchen entscheiden Sie so allein auf den Indexbereichen basiert, und würde scannen genau die gleiche Anzahl von Datensätzen mit oder ohne Partitionierung.

das einzige Mal, wenn Partitionierung einen Leistungsvorteil hat, ist für die Verwaltungstätigkeiten wie Trennschalter ein und schalten Sie aus einer Tabelle oder Bulk-Import-Operationen.

Vorteile Leistung kann nur von richtigen Indizes kommen und sorgfältig gestaltete Abfragen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top