Kurzversion: Können wir in mehreren Threads von Dutzenden oder Hunderten von Tabellenpartitionen lesen, um die Leistung um Größenordnungen zu steigern?Azure-Tabellenspeicherleistung von massiv parallelen Threading-Leseoperationen
Lange Version: Wir arbeiten an einem System, das Millionen von Zeilen im Azure-Tabellenspeicher speichert. Wir teilen die Daten in kleine Partitionen auf, von denen jede etwa 500 Datensätze enthält, die Daten eines Tages für eine Einheit darstellen.
Da Azure kein "Summen" -Feature hat, um ein Jahr Daten zu ziehen, müssen wir entweder ein Pre-Caching verwenden oder die Daten selbst in einer Azure-Web- oder Worker-Rolle summieren.
Unter der Annahme, die folgenden: - eine Partition Lese hat keinen Einfluss auf die Leistung eines anderen - eine Partition Lese hat ein Engpass basierend auf Netzwerkgeschwindigkeit und Serverabfrage
Wir können dann, dass eine Vermutung nehmen, wenn wir wollten, Um schnell eine Menge Daten schnell zu summieren (1 Jahr, 365 Partitionen), könnten wir einen massiv parallelen Algorithmus verwenden und er würde nahezu perfekt auf die Anzahl der Threads skalieren. Zum Beispiel könnten wir die parallelen .NET-Erweiterungen mit mehr als 50 Threads verwenden und einen GROSSEN Leistungsschub erhalten.
Wir arbeiten an der Einrichtung einiger Experimente, aber ich wollte sehen, ob dies schon einmal gemacht wurde. Da die .NET-Seite im Grunde im Leerlauf ist und auf Operationen mit hoher Latenz wartet, scheint dies perfekt für Multithreading zu sein.
Haben Sie 6 Jahre später einen Kommentar dazu? – mayu
Ja, das ist eine gute Idee, besonders seit die Skalierbarkeitsziele im Laufe der Zeit gestiegen sind. Werfen Sie einen Blick auf diese Seite, um die Grenzen zu verstehen: https://docs.microsoft.com/en-us/azure/storage/storage-scalability-targets –