As other users note, Azure tables are strictly controlled by the runtime, and therefore you cannot control / check which specific storage nodes process your requests. In addition, any dedicated partition is served by a single server , that is, objects belonging to the same partition cannot be shared between several storage nodes (see HERE )
In a Windows Azure table, the PartitionKey property is used as the partition key. All objects with the same PartitionKey value are grouped together and served from a single node server. This allows the user to control the locality of entities by setting PartitionKey values ββand performing Entity Group transactions on objects in the same section.
Do you mention that you are targeting 8000 queries per second? If so, you can get a threshold that requires a very good table / section design. See " Azure Storage Abstractions and Scalability Targets ".
The following example applies to your situation:
This will provide the following scalability goals for the individual vault account created after June 7, 2012.
- Capacity - up to 200 TB
- Transactions Up to 20,000 objects / messages / blocks per second.
As other users have pointed out, if the PartitionKey numbering follows an incremental pattern, the Azure runtime recognizes this and groups some of your partitions into a single node storage.
Also, if I understood your question correctly, are you currently assigning partition keys using a GUID? If so, this means that each PartitionKey in your table will be unique, so each partition will have no more than 1 object. In accordance with the above articles, the way to scale an Azure table is to group objects in their partition keys inside independent storage nodes. If your partition keys are unique and therefore contain no more than one object, this means that the Azure table will scale only one entity at a time! Now we know that Azure is not so dumb, and it groups partition keys when it discovers the template in the form in which it was created. Therefore, if you click this trigger in Azure and Azure groups your partitions, it means that your scalability is limited by the cleverness of this grouping algorithm.
In accordance with the scalability goals outlined above in 2012, each section should be able to give you 2,000 transactions per second. Theoretically, in this case, you should have no more than 4 partition keys (provided that the workload between the four is distributed equally).
I would suggest that you create your own partition keys to group entities in such a way that no more than 2000 objects per second for each partition are reached, and deleted using the GUID as partitions. This will allow you to better support features such as the Entity Transaction Group, reduce the complexity of your table design, and get the performance you're looking for.