【问题标题】:Azure CosmosDb create partition onlyAzure CosmosDb 仅创建分区
【发布时间】:2018-11-20 23:29:03
【问题描述】:

也许我已经知道答案,但我希望得到一些反馈。

我有一个没有分区键(空)的 Azure CosmosDb,我想创建一个,因为 RU 太高,所以性能提高了。

我的潜在分区是 Date (20181005)。

我的问题是,如果我不将日期作为查询的一部分发送(大多数时候我们通过 ID 请求对象),分区是否有助于提高性能?

我相信它会更好地组织文档,但是,我希望得到一些反馈。

谢谢

【问题讨论】:

  • 不完全确定您在问什么,但是...您无法在没有分区键的情况下进行查询,除非您指定了启用跨分区查询的标头(它将查询每个分区),并且可能不是你的想法。但是如果你知道 ID,你可以通过 SDK 直接读取文档,绕过整个查询引擎。
  • @DavidMakogon 文档 ID 仅在其自己的逻辑分区内是唯一的,这意味着它还不够。资源 id 可以执行您所说的操作,但如果不从文档中读取它,您就无法拥有它。
  • @NickChapsas 你是对的。我的观点是关于查询与点读,但正确 - 仍然需要分区键。

标签: azure azure-cosmosdb


【解决方案1】:

文档 ID 仅在其自己的逻辑分区内是唯一的。您可以拥有多个具有完全相同 id 属性的文档,只要它们位于不同的逻辑分区中即可。

如果你对你的收藏进行分区,你必须处理两个(许多)现实。

  • 逻辑分区大小不能超过 10GB
  • 为了进行高效的查询和读取,您必须在操作旁边提供分区键值。

您仍然可以使用跨分区查询来执行任何查询操作,但如果可能的话,这是应该避免的。如果您发现自己需要频繁使用跨分区查询,那么您的分区策略就有问题。

底线是,如果在查询过程中不提供分区键,您的查询性能会更差。

【讨论】:

    猜你喜欢
    • 2022-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多