【问题标题】:In Cosmos DB, is there a max size of documents you can send to a Stored Procedure?在 Cosmos DB 中,是否有可以发送到存储过程的最大文档大小?
【发布时间】:2018-05-07 13:53:35
【问题描述】:

我在 Cosmos 中收到“请求大小太大”错误。 我最终将以下文档(每一行都应该创建一个文档)发送到我的批量导入存储过程:

这些都不超过 2 MB,除非我将 2 MB 误解为小于 150 万。

尺寸计算:

    var json = JsonConvert.SerializeObject(series);
    var sizeMethod1 = json.Length * sizeof(Char);
    var sizeMethod2 = System.Text.UTF8Encoding.Unicode.GetBytes(json).Length;
    log.Info($"Document Size Method 1: {sizeMethod1} and Size Method 2: {sizeMethod2}");

当存储过程抛出错误时,调试存储过程非常具有挑战性。

【问题讨论】:

标签: azure azure-cosmosdb


【解决方案1】:

当存储过程抛出异常时,调试存储过程非常具有挑战性 错误。

您可以使用console.log () 计算存储过程中文档的大小,如下所示。然后使用getScriptLog 获取存储过程console.log() 语句的输出。

请注意,EnableScriptLogging = true 是打印 console.log 所必需的:

var response = await client.ExecuteStoredProcedureAsync(
    document.SelfLink,
    new RequestOptions { EnableScriptLogging = true } );
Console.WriteLine(response.ScriptLog);

你可以参考这个official doc

我在 Cosmos 中收到“请求大小太大”错误。

请求大小太大意味着您向存储过程发送了太多输入。脚本的最大输入大小当前为 2MB。您可以减少输入文档以适应该限制,并按照官方doc 上的批量插入示例进行操作。

希望对你有帮助。

【讨论】:

  • 奇怪的是,我一直在向我的存储过程发送大于 2mb 的请求...
  • @A.Rowan 你的意思是你一直在发送请求并且之前没有发生错误?
  • 是的。上图代表我将发送给 SP 的捆绑包。那个失败了,但我一直发送那些加起来是 2.8 左右的。它有点像 RU 限制。我一直很好地超过(10 倍到 100 倍)限制并且只是获得速率限制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多