Wie kann eine Azure-Tabelle mit vielen Partitionsschlüsseln mit vielen Tabellen mit weniger Partitionsschlüsseln verglichen werden?

8

Ich habe eine Windows Azure-Anwendung, in der alle Leseabfragen von TableA auf einzelnen Partitionen für einen Bereich von Zeilenschlüsseln ausgeführt werden. Die Partitionsschlüssel, die dieses Speicherschema unterstützen, sind eigentlich abgeflachte Namen von Objekten in einer Hierarchie, so dass der Partitionsschlüssel wie {root}_{child1}_{child2}_{leaf} formatiert ist. Ich kann verstehen, wie es sinnvoll ist, diese große Tabelle A in viele Tabellen aufzuteilen, indem die Stammdimension der Partitionsschlüssel in der Benennung der Tabellen verwendet wird (der Partitionsschlüssel würde also {child1}_{child2}_{leaf} werden).

Ich möchte so schnell wie möglich von so vielen Verbindungen gleichzeitig auf diese Daten zugreifen. Es wäre auch unglaublich, wenn ich herausfinden könnte, was diese Grenzen sind oder sein sollten.

Speziellere Fragen zu meiner vorgeschlagenen Änderung:

  1. Wird sich dadurch die Skalierbarkeit ändern, d. h. die Anzahl gleichzeitiger Datenzugriffsanforderungen, die ausgeführt werden können, ohne die Leistung drastisch zu verbessern? Wird gleichzeitig serviert?
  2. Wird dies die durchschnittliche Leistung beeinflussen? Mögliche Leistung?
user483679 12.06.2011, 04:41
quelle

2 Antworten

10

Wenn jede Abfrage einen Partitionsschlüssel angibt, macht es keinen Unterschied, in wie vielen Tabellen diese Partitionen verteilt sind. Mit anderen Worten, das Folgende ist äquivalent: eine Tabelle mit tausend Partitionen im Vergleich zu tausend Tabellen mit jeweils einer Partition.

Der Hauptgrund für die Aufteilung in mehrere Tabellen ist, dass Sie eine ganze Tabelle in einer einzigen Operation / Transaktion löschen können, während Sie dies nicht mit einer Reihe von Partitionen in derselben Tabelle tun können. Das bedeutet für Dinge wie Logs, wo Sie nach einer Weile die älteren löschen möchten, ist es oft besser, verschiedene Tabellen für verschiedene Zeitbereiche zu haben.

    
smarx 12.06.2011, 07:54
quelle
6

+1 für Steves Antwort.

Einige Dinge hinzufügen

  • Es könnte sich lohnen, die Verwendung mehrerer Speicherkonten in Betracht zu ziehen - da es derzeit das Speicherkonto ist, das die Einheit von scability darstellt - jedes Speicherkonto ist offiziell auf ungefähr 5.000 Entitäten / Transaktionen pro Sekunde ausgerichtet. Wenn Sie also höher als das möchten, müssen Sie um mehrere Konten zu verwenden.
  • Es gibt einige heikle Details in der Leistung, wie Sie Ihre Daten abfragen. Wenn sich Elemente nicht auf derselben Partition befinden, ist es im Allgemeinen schneller, separate parallele Abfragen durchzuführen, anstatt eine einzelne Abfrage mit einem komplizierten where-Parameter auszuführen.
  • Sie können die Blogposts im Blog des Speicherteams besonders hilfreich finden - Ссылка und Ссылка
  • Sie müssen sich vielleicht auch der Kosten bewusst sein - ungefähr $ 1 pro Million Treffer.
Stuart 12.06.2011 10:42
quelle