此问题涉及Azure表存储中描述为here的性能目标阈值。特别是,我关注每个分区的2K实体,以及每秒20K实体的总阈值。我的理解是,如果你超过这些阈值,Azure可能会开始返回500和503错误。
我想我可能会碰到这个问题,而且我正在寻找关于这些项目究竟是如何计算的澄清。据我所知,如果您对整个表格或分区进行扫描,您可能会被收取费用"对于Azure扫描的每个实体,无论您返回的数量是多少。因为您可以刻录整个查询"预算"在一个设计不佳的2000行表的查询中,我想确保我正确理解这一点。
为了清楚起见,这是一个简单的表格和相同的样本数据,我们可以在接下来的几个场景中使用。
PartitionKey | RowKey | Name
----------------------------
A 1 Alice
A 2 Bob
A 3 Candice
A 4 Dave
A 5 Eugenia
B 6 Frank
B 7 Genevieve
B 8 Henry
C 9 Ike
C 10 Jennifer
对于以下每种情况,我都会调用“收费”实体的数量。违反绩效目标"预算"表演费。让我们从最恶劣的进攻开始,然后从那里开始。
没有PK,没有指定RK
查询:姓名=="弗兰克"
绩效费用:10个实体
我相信这是正确的(如果我错了,请纠正我)。但是下面的场景呢?
PK指定,未指定RK
查询:PartitionKey ==" A" AND Name ==" Frank"
绩效费用:5个实体
指定PK,指定RK范围
查询:PartitionKey ==" A" AND(RowKey> =" 2" AND RowKey< =" 3")
表演费:2?还是5?
指定PK,指定RK部分范围
查询:PartitionKey ==" A" AND RowKey> =" 4"
表演费:2?还是5?
指定的PK范围
查询:PartitionKey> =" B" AND PartitionKey< =" C"
表演费:5?还是10?
指定部分PK范围
查询:PartitionKey> =" C"
表演费:2?还是10?
提前感谢您的任何指示!
答案 0 :(得分:0)
根据我的经验,这是我对您的查询的理解,您可以参考它。
没有PK,没有指定RK 查询:姓名=="弗兰克"
全表扫描:查询结果扫描整个表(即表中所有分区中的所有行)。
表演费:10
PK指定,没有指定RK 查询:PartitionKey ==" A" AND Name ==" Frank"
PK指定,指定RK范围 查询:PartitionKey ==" A" AND(RowKey> =" 2" AND RowKey< =" 3")
指定PK,指定RK部分范围 查询:PartitionKey ==" A" AND RowKey> =" 4"
行范围扫描:查询会扫描特定分区中的行。
表演费:5
查询:PartitionKey> =" B" AND PartitionKey< =" C"
查询:PartitionKey> =" C"
分区范围扫描:查询会扫描一系列分区服务器。
表演费:5,2
此外,您可以关注Designing a Scalable Partitioning Strategy for Azure Table Storage和此tutorial,以便更好地了解它。