AWS DynamoDB性能随索引

时间:2016-10-15 15:29:33

标签: performance amazon-web-services indexing amazon-dynamodb latency

故意稀疏本地二级索引(LSI)添加到表中是否有好处,以便通过表的 HASH 键加快查询速度(通过仅减少要检查的项目数量)?

示例:

Table
  - processId (HASH)
  - threadId (RANGE)
  - <other fields>
  - active

现在让我们说有1.000.000个进程,每个进程有1-20个线程,所以我们在这个表中有大约10.000.000个项目。一次只有大约1.000个进程处于活动状态,而那些未处于活动状态的进程完全缺少 active字段(因此包含active字段的索引将保持约1.000仅限物品)。活动状态是每个进程,而不是每个线程,因此我们在单个进程中不能有一些活动线程和一些非活动线程。

目标是获取给定processId的所有项目,而我们不关心非活动进程(我们可以简单地为它们返回一个空的线程列表)。

现在,第一个选项仅用processId查询此表。

第二个选项是创建此索引:

LSI
  - processId (HASH)
  - active (RANGE)

,然后按processId查询。

问题:创建这样的索引有什么好处吗?我认为没有,因为无论需要检查多少记录,通过哈希查找都应该产生相同的性能。请注意,我忽略了第一个选项也可能返回非活动进程的事实(我只是丢弃)。我只对 HASH 的查找延迟感兴趣,在 10M 项目与 1K 项目的索引表中。< / p>

0 个答案:

没有答案