接入tablestore注意事项

发布时间 2023-08-25 16:44:14作者: xudong5273

接入tablestore注意事项

1. 一个表只能建4个主键(其中一个要作为分区键),并且主键的顺序要注意,不然后面查询数据会查不到。
2. 第一列主键作为分区键。分区键相同的数据会存放在同一个分区内,所以相同分区键下的数据尽量不要超过10 GB,否则会导致单分区过大,无法分裂。
3. 当使用GetRange扫描的数据量较大时,表格存储每次请求仅会扫描一次(行数大于5000或者大小大于4 MB停止扫描),超过限制的数据不会继续返回,需要通过翻页继续获取后面的数据
4. nextStartPrimaryKey: 根据返回结果中的nextStartPrimaryKey判断数据是否全部读取。当返回结果中nextStartPrimaryKey不为空时,可以使用此返回值作为下一次GetRange操作的起始点继续读取数据。当返回结果中nextStartPrimaryKey为空,表示读取范围内的数据全部返回。
5. GetRange操作遵循最左匹配原则,读取数据时,依次比较第一主键列到第四主键列。例如数据表的主键包括PK1、PK2、PK3三个主键列,读取数据时,优先比较PK1是否在开始主键与结束主键的范围内,如果PK1在设置的主键范围内,- 则不会再比较其他的主键,返回在PK1主键范围内的数据;如果PK1在设置的主键边界上,则继续比较PK2是否在开始主键与结束主键的范围内,以此类推。关于范围查询原理的更多信息,请参见GetRange范围查询详解。

GetRange范围查询详解链接:https://developer.aliyun.com/article/742095?spm=a2c4g.11186623.0.0.87da5f86e53d3C

6.GetRange操作可能在如下情况停止执行并返回数据。
- 扫描的行数据大小之和达到4 MB。
- 扫描的行数等于5000。
- 返回的行数等于最大返回行数。
- 当前剩余的预留读吞吐量已全部使用,余量不足以读取下一条数据。
- 当使用GetRange扫描的数据量较大时,表格存储每次请求仅会扫描一次(行数大于5000或者大小大于4 MB停止扫描),超过限制的数据不会继续返回,需要通过翻页继续获取后面的数据。