Azure Table Storage分区策略制定及性能指标相关咨询
Azure Table Storage 分区策略性能指标疑问解答
疑问1:超过10个分区是否无法获得更多吞吐量收益?
这个推论不成立,超过10个分区依然存在实际收益,原因如下:
- 你提到的单存储账户每秒20000 transaction是通用v1(General Purpose v1)存储账户的历史性能上限,若使用通用v2存储账户、或为账户开启高吞吐量配置,账户级TPS上限可提升至10万/秒甚至更高,完全可以支撑超过10个分区同时跑满2000 TPS的流量。
- 即使使用的是旧版v1存储账户,若你的业务场景中单个分区的实际吞吐量不会触达2000的上限,更多分区可以分散请求压力、避免单分区热点问题,依然能支撑更高的整体并发量。
- 若你使用的是Azure Cosmos DB for Table服务,不存在固定的账户级TPS上限,吞吐量完全随分区数线性扩展,分区数越多总吞吐量越高。
疑问2:transaction与entity是否可互换?批量transaction如何计数?
关于术语区别
transaction和entity不可互换使用,两者的计数规则不同:
- 单分区每秒2000 entity的指标,指的是1KiB大小实体的操作处理能力:单次读写1个1KiB实体,会被同时计数为1个entity操作和1个transaction。
- 若实体大小超过1KiB,每额外1KiB的数据量会多计数1个transaction,此时transaction的数值会高于实际操作的entity数量。
关于批量transaction计数规则
账户级20000 TPS的上限适用于批量操作,但计数规则和你理解的不同:
- 单批次实体组事务(
Entity Group Transaction)本身仅计数为1个账户级transaction,不需要用20000除以批量内的实体数计算上限。 - 但批量操作内的每个实体操作,会计入对应分区的entity吞吐量配额:比如你批量写入10个同分区的1KiB实体,该操作仅占用1个账户级transaction配额,但会占用10个对应分区的entity操作配额。
补充注意:单批次批量操作最多支持100个实体,总大小不可超过4MiB,即使批量操作执行失败回滚,依然会被计数为1个transaction。
内容的提问来源于stack exchange,提问作者Alexandr Savochkin
相关产品推荐
相关产品推荐

