读/写吞吐量的单位为读服务能力单元和写服务能力单元,简称CU (Capacity Unit),是数据读写操作的最小计费单位。应用程序通过API进行表格存储读写操作时,会消耗对应的写服务能力单元和读服务能力单元。

  • 1单位读能力表示从数据表中读一条4KB数据。
  • 1单位写能力表示向数据表写一条4KB数据。
  • 操作数据大小不足4KB的部分向上取整,如写入7.6KB数据消耗2单位写能力,读出0.1KB数据消耗1单位读能力。

预留读/写吞吐量

预留读/写吞吐量是高性能实例数据表的一个属性。应用程序在创建表的时候,可以为表指定预留读/写吞吐量。当设置的预留吞吐量大于0时,表格存储会为表分配和预留相应的资源,应用程序每秒不超过预留吞吐量的访问将会按照预留吞吐量的单价进行计费。由于预留读/写吞吐量在单价上低于按量读/写吞吐量,配置合适的预留读/写吞吐量可以进一步降低成本。

例如,刚建表之后如果需要导入大量数据,可以设置较大的预留写吞吐量,能够以较低的写成本将数据导入进来,当数据导入完毕后,再将预留读/写吞吐量下调。

说明
  • 容量型实例不支持预留读/写吞吐量。
  • 预留读/写吞吐量可以设置为0。
  • 不存在的表将被视作预留读/写吞吐量均为0,访问不存在的表将根据操作类型消耗1个按量读CU或者1个按量写CU。

限制

  • 容量型实例下的表不支持预留读/写吞吐量。
  • 当预留读/写吞吐量大于0时,即使没有读写请求也会进行计费,所以表格存储限制用户能够自行设置的单表预留读写吞吐量最大为5000 (读和写分别不超过5000)。如果用户有单表预留读写吞吐量需要超出5000的需求,可以提交工单提高预留读写吞吐量。

修改预留读/写吞吐量

应用程序可以通过UpdateTable接口动态修改表的预留读/写吞吐量配置。预留读/写吞吐量的更新有如下规则:
  • 每个自然日内(UTC时间00:00:00到第二天的00:00:00,北京时间早上8点到第二天早上8点),上调或者下调预留读/写吞吐量的总次数不做限制,一张表上的两次更新的间隔必须大于2分钟。

  • 预留读/写吞吐量调整完毕后1分钟内生效。

按量读/写吞吐量

按量读/写吞吐量是数据表在每一秒钟实际消耗的读/写吞吐量中超出预留读/写吞吐量的部分,统计周期为1秒。每个小时内,表格存储对预留吞吐量取平均值,对按量吞吐量取累加值来作为用户实际消耗的吞吐量。

由于按量读/写吞吐量的模式无法预估需要为数据表预留的计算资源,表格存储需要提供足够的服务能力以应对突发的访问高峰,所以按量吞吐量的单价高于预留吞吐量的单价。合理设置数据表的预留吞吐量能够有效地降低使用成本。

假如数据表设置的预留读吞吐量为100CU,连续3秒的访问情况如下:

  • T0:读操作实际消耗120CU读吞吐量,则这1秒内预留吞吐量为100,消耗的按量读吞吐量为20CU。
  • T1:读操作实际消耗95CU读吞吐量,则这1秒内预留吞吐量为100,消耗的按量读吞吐量为0CU。
  • T2:读操作实际消耗110CU读吞吐量,则这1秒内预留吞吐量为100,消耗的按量读吞吐量为10CU。

T0至T2时刻的消耗的读吞吐量为:100CU预留读吞吐量以及30CU按量读吞吐量。

说明 由于按量读/写吞吐量无法准确估计需要预留的资源,在某些极端访问情况下,若单个分片键每秒钟的访问需要消耗10000 CU,表格存储可能会返回 OTSCapacityUnitExhausted 错误给应用程序。此时,应用程序需要使用退避重试等策略来减少访问该表的频率。