我使用批量执行器在Azure Cosmos DB SQL容器中插入了100万个文档。未记录任何错误。所有文档共享相同的分区密钥。容器配置为3200 RU/s、无限存储容量和单区域写入。
执行简单的计数查询时:
select value count(1) from c where c.partitionKey = @partitionKey
我得到的结果从303,000到307,000不等。
这个计数查询适用于较小的分区(从10k到250k的文档)。
什么会导致这种奇怪的行为?
在cosmos db里是合理的。首先,您需要知道的是,Document DB对< code >响应页面大小施加了限制。这个链接总结了其中的一些限制:Azure DocumentDb存储限制——它们到底是什么意思?
其次,如果要从Document DB查询大数据,则必须考虑查询性能问题,请参阅本文:使用Azure Cosmos DB优化查询性能。
通过查看文档DB REST API,您可以观察到对查询操作有重大影响的几个重要参数:< code>x-ms-max-item-count,x-ms-continuation。
所以,你的错误是由于RUs设置的瓶颈造成的。< code>count查询受分配给您的集合的ru数量的限制。您将收到的结果将有一个延续标记。
您可能有2种解决方案:
1.Surely,您可以提高RU设置。
2.对于成本,您可以通过continuation token继续寻找下一组结果,并继续添加它,以便获得总计数。(大概在sdk里)
您可以设置“最大项目计数”的值,并使用继续标记对数据进行
分页。文档数据库 sdk 支持无缝读取分页数据。您可以参考python代码片段,如下所示:
q = client.QueryDocuments(collection_link, query, {'maxItemCount':10})
results_1 = q._fetch_function({'maxItemCount':10})
#this is a string representing a JSON object
token = results_1[1]['x-ms-continuation']
results_2 = q._fetch_function({'maxItemCount':10,'continuation':token})
我在我的数据库中导入了3万份文档。然后,我尝试运行查询
在查询资源管理器中从c
中选择值计数(1)。结果显示,每页文档只占总文档的一部分。因此,我需要通过单击<code>下一页
当然,您可以通过继续令牌在 sdk 代码中执行此查询。
我正试图写一个C程序来计算元音、键击和字母字符的数量。击键计数器正在工作,但是元音计数器总是关闭一个元音。阿尔法计数器坏了。
我正在尝试匹配从服务器下载的文件的md5sum。只有当总和匹配时,处理才会继续。 上面的代码并没有每次为某些文件正确提供md5sum。 当我去控制台检查md5sum时 下载文件的vimdiff未提供任何差异。。下载后的文件是正确的。 我无法在上述代码中看到问题。 我正在尝试更改缓冲区大小。但没有运气,所以我猜这不是因为缓冲区大小等。 问候Dheeraj Joshi
问题内容: 我试图摆脱elasticsearch。正在阅读权威指南。 他们提到,每次我更新文档中的某些内容时,更新API都会执行一次检索-更改- 重新索引周期。我完全拿到,因为他们说,“文件是不可变的”(见本做这个)。我在这里要问的是为什么它首先是不可变的。如果这不是约束,那么只允许特定字段的更新和索引是否具有优势? 问题答案: 首先,告诉段是不可变的比告诉文档是不可变的要好。了解原因。您需要了解
我需要阅读由AutoCAD导出为PDF的平面图,并使用PDFBox在上面放置一些带有文本的标记。除了文字宽度的计算之外,一切都很顺利,文字的宽度写在标记旁边。 我浏览了整个PDF规范,详细阅读了其中涉及图形和文本的部分,但没有任何效果。据我所知,字形坐标空间设置在用户坐标空间的1/1000处。因此,宽度需要放大1000倍,但仍然是实际宽度的一小部分。 这就是我为定位文本所做的: *0.043f可以
我有一个word文件,我想数一下里面有多少页。 已使用Docx4Java创建该文件。 以前有人这么做过吗? 谢谢!
Imma java新手,所以我试着学东西。我创建了一个布尔方法,这是一个小的骰子游戏。我需要这个方法是从main方法调用,并继续玩,而返回值是真的(游戏是赢的),但停止执行,如果返回值是假的。我也需要多少次球员赢了。所以我创造了这样的东西: 初始化为私有静态int