我们使用官方Java SDK编写了Azure Table基准测试/压力测试。所有基准测试都是尽快从Azure表中下载整个分区。
每个分区包含~5到~60K个实体。平均而言,实体大小约为1KB。并且代码是从与表相同的区域中的Azure VM执行的。 According to the official documentation,每个分区仅限于每秒获取2000个实体:
单个表分区的目标吞吐量(1 KB实体) - 最多 每秒2000个实体
到目前为止,我们在某些测试中设法读取了每个分区>> 18K实体。我们看到这样的数字甚至是一些未被触及数月的冷隔板。
一旦我们每秒达到2000个实体,我预计会受到限制......但我们不是。这怎么可能?我们可以依靠我们在实践中看到的数字,还是这是一个侥幸?
答案 0 :(得分:3)
Azure存储可伸缩性目标并不准确。无法保证每秒恰好达到2,000笔交易。这就是说:Azure存储(特别是表)的可扩展性目标是每个分区每秒2,000个事务。每个存储帐户每秒20,000个事务。
Transaction = REST调用,与数据库事务不同。
我看到了你指出的文档,每秒提到2,000个实体。这不是真的如何运作。您可能会在每次REST调用(GET)中接收多个实体,因此这可能是您每分钟看到超过2,000个实体的解释。
根据文档here:
针对Table服务的查询一次最多可返回1,000个实体,并且最多可执行五秒。
因此,您很可能每笔交易获得多个实体。