Azure Table Storage - quelle vitesse peut-il analyser I table?
-
27-10-2019 - |
Question
Tout le monde met en garde de ne pas requête sur autre chose que RowKey ou PartitionKey dans Azure Table de stockage (ATS), que vous ne soyez obligé de scan de table. Pendant un certain temps, cela m'a paralysé en essayant de trouver exactement le bon PK et RK et la création d'indices pseudo-secondaires dans d'autres tables quand je besoin de quelque chose d'autre requête.
Cependant, il me semble que je analyse couramment table dans SQL Server lorsque je pensais approprié.
La question devient, à quelle vitesse peut la table I analyse une table Azure. Est-ce une constante dans les entités / seconde ou dépend-elle de la taille disque, etc. Y at-il des règles empiriques quant au nombre de dossiers est trop pour le balayage de la table si vous voulez une application sensible?
La solution
La question d'une analyse de table doit faire avec les limites de traverser la partition. Le niveau de performance vous garanti est fixé de niveau au explicity de partition. Par conséquent, lorsque vous exécutez une analyse complète de la table, son a) pas très efficace, b) n'a pas de garantie de performance. En effet, les partitions elles-mêmes sont définies sur les nœuds de stockage séparés, et lorsque vous exécutez une analyse de partition croisée, vous consommez des quantités potentiellement énormes de ressources (encordement jusqu'à plusieurs nœuds simultanément).
Je crois que l'effet de franchir ces limites entraîne également des jetons de continuation, qui nécessitent d'allers-retours supplémentaires pour le stockage pour récupérer les résultats. Il en résulte alors dans la réduction de la performance, ainsi qu'une augmentation du nombre de transactions (et par la suite coût).
Si le nombre de partitions / nœuds vous croisons est assez petit, vous ne remarquerez probablement aucun problème.
Mais s'il vous plaît ne me cite pas à ce sujet. Je ne suis pas un expert sur Azure Storage. Sa fait la zone d'Azur, je suis le moins bien informé. : P
Autres conseils
Je pense que Brent est de 100% par rapport à l'argent, mais si vous vous sentez toujours que vous voulez l'essayer, je ne peux que suggérer d'exécuter des tests pour vous-même. Essayez inclure le PartitionKey dans vos requêtes afin d'éviter de traverser les partitions car à la fin de la journée qui est le tueur de performance.
tables Azure ne sont pas optimisés pour les analyses de table. Numérisation de la table peut être acceptable pour un travail de fond de longue date, mais je ne le ferais pas quand une réponse rapide est nécessaire. Avec une table de toute taille raisonnable, vous devrez jetons de continuation de la poignée que la requête atteint une limite de partition ou obtient des résultats 1k.