繁体   English   中英

DynamoDB PartiQL select 语句在分区键和排序键上使用 IN 运算符 - 如何计算 RCU?

[英]DynamoDB PartiQL select statement with IN operator on both partition key and sort key - How RCU is calculated?

用例:需要从 Dynamodb 中检索多个 pk(PartitionKey)+sk(SortKey) 组合的数据。 因此,在 pk 和 sk 上都在 partiql 中利用 IN 运算符。

我对 2 种类型的 partiql 模式消耗了多少 RCU 进行了小型 poc。

  • 模式 1 :RCU 消耗 = 5,返回项目计数 = 4。对于查询:

SELECT * 来自 "test" where pk IN ['12185','05405','14222'] 和 sk IN ['CELL_ID:101','CAM_ID:12185','CAM_ID:05405','CAM_ID:14222', 'CAM_ID:14223'];

  • 模式 2 :RCU 消耗 = 1.5,返回项目计数 = 30。对于查询:

SELECT * 来自“测试” where pk IN ['12185','05405','14222'];

问题-

  1. 如何计算这两种 partiQL 模式的 RCU?

这个问题的答案将帮助我设计查询。 如果 pk 和 sk 上的 IN 运算符是个坏主意,我会坚持只在 pk 上使用 In 运算符并在应用程序端进行 sk 过滤。

使用 PartiQL 时,您需要了解它如何转换为较低级别的 API。

SELECT * from "test" 
where pk IN ['12185','05405','14222'] 
and sk IN ['CELL_ID:101','CAM_ID:12185','CAM_ID:05405','CAM_ID:14222','CAM_ID:14223'];

在这里,您使用 3 个分区键,但 5 个排序键将导致执行 10 个操作。 PartiQL 后端在您需要分页之前只允许 10 个内部GetItem请求,并且由于您的请求最终是一致的,因此每个消耗 0.5 RCU:

10 * 0.5 = 5RCU 消耗

SELECT * from "test" where pk IN ['12185','05405','14222'];

这将导致 3 Query操作,每个查询将四舍五入到最接近的 4KB。

3 * 0.5 = 1.5 RCU 消耗

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM