表格存储对实例的数据总量按小时计费。表格存储以固定的时间间隔统计数据总量,然后计算每小时数据总量的平均值。

如下图所示,表格存储中实例的数据总量是所有表的数据量之和,表的数据量是表中所有行的数据量之和,所有行的数据量是所有单行数据的主键列和属性列数据量之和。

说明 关于最新的单价信息,请参见表格存储价格详情页

下面举例说明如何计算单行和表的数据量。

计算行数据量

表格存储的每行数据都占用一定的存储空间。开启多版本或设置数据表生命周期后,每一个版本的数据需要包括版本号(占用 8 字节)、列名和数据值。

存储空间的计算公式:单行数据量 = 主键列的数据量 + 所有属性列的数据量

其中,

  • 主键列的数据量 = 主键列的名字长度之和 + 主键列的值的数据量之和

  • 属性列的数据量计算方式,请参考本文档中关于行及表的数据量计算示例的具体说明。

值的数据量的计算方式:

数据类型 字节数
String UTF-8 字符串占用的字节数(表格存储允许值为空的 String 类型,如果字符串为空,则数据大小为 0。)
Integer 8
Double 8
Boolean 1
Binary 二进制数据占用的字节数

行数据量的计算示例:

数据表主键列为 ID(Integer)。其中 ID 是主键列,其他均为属性列。

ID Name Length Comments
1 timestamp = 1466676354000, value = ‘zhangsan’ timestamp = 1466676354000, value = 20

timestamp = 1466676354000, value = String (100 Bytes)

timestamp = 1466679954000, value = String (150 Bytes)

其中,Comments 有两个有效版本:

  • 当 MaxVersions = 2,TTL = 2592000 时:
    单个属性列的数据量 = (属性列名字长度之和 + 8) * 有效版本个数 + 该属性列所有有效版本的值数据量之和
    说明 在使用多版本(即 Max versions > 1)或者使用了 TTL(即 TTL!= -1)的情况下,每个版本号需要占用 8 字节(以下提到的 timestamp 等同于版本号)。
    该行数据量 = 10 + 20 + 22 + 282 = 334 Bytes,详情如下:
    • 主键列数据量 = len (‘ID’) + len (1) = 10 Bytes
    • 属性列 Name 数据量 = (len (‘Name’) + 8) * 1 + len (‘zhangsan’) = 20 Bytes
    • 属性列 Length 数据量 = (len (‘Length’) + 8) * 1 + len (20) = 22 Bytes
    • 属性列 Comments 数据量 = (len (‘Comments’) + 8) * 2 + 100 + 150 = 282 Bytes
  • 当 MaxVersions = 1,TTL = -1 时:

    单个属性列的数据量 = 属性列名字长度之和 + 属性列的值的数据量之和

    说明
    • 在不使用多版本(即 Max versions = 1)且不使用 TTL(即 TTL = -1)的场景下,版本号不占用字节。
    • 虽然 Comments 有两个版本,但由于 MaxVersions = 1,只计算最新的版本。

    该行数据量 = 10 + 12 + 14 + 158 = 194 Bytes,详情如下:

    • 主键列数据量 = len (‘ID’) + len (1) = 10 Bytes
    • 属性列 Name 数据量 = len (‘Name’) + len (‘zhangsan’) = 12 Bytes
    • 属性列 Length 数据量 = len (‘Length’) + len (20) = 14 Bytes
    • 属性列 Comments 数据量 = len (‘Comments’) + 150 (Bytes) = 158 Bytes

计算表数据量

表的数据量是表中所有行的数据量之和。假设存在如下表, ID 是主键列,其他均为属性列。当该表 Max versions = 2,TTL = -1。其数据量计算方式如下图:

  • 对于 ID = 1 的行,其数据量 = 10(主键列数据量)+282(Comments 属性列两个版本的数据量) = 292 Bytes。
  • 对于 ID = 2 的行,其数据量 = 10(主键列数据量)+ 216(Comments 属性列一个版本的数据量)+ 22(Length 属性列一个版本的数据量)= 248 Bytes。
  • 因此该表的数据量之和为 292 + 248 = 540 Bytes。

假设一小时内表的数据量之和未发生变化,将会按 540 Bytes 进行计费。表格存储对单表数据量没有限制,用户可以根据自己的实际需求使用,按量付费。

说明 表格存储会异步对各个数据分区过期的数据及超过最大版本号的版本数据进行清理操作,并在清理操作完成后统计该数据分区数据量。清理时长与总数据量相关,一般会在 24 小时内完成。数据清理操作完成后新写入的数据将在下一个数据清理操作之后计入该分区数据量。